after insert on I_WZ2SC_SHJHZWJ
for each row
declare
v_materielName SCM_WZ_DemandPlan.Materielname%TYPE;
v_plan_uuid SCM_WZ_DemandPlan.Id%TYPE; --唯一编号
v_sysdate SCM_WZ_DemandPlan.Createddate%TYPE; --当前数据库时间
v_plan_unitId SCM_WZ_DemandPlan.Unitid%TYPE; --UnitId,按接收计量单位转换
v_plan_storageId SCM_WZ_DemandPlan.storageId%TYPE; --ToStockId,以DHCK作为当
begin
v_materielName := materielName_function('SHTB', :new.CLBH);
select sys_guid() into v_plan_uuid from dual; --自动产生Id
select sysdate into v_sysdate from dual; --获取当前数据库时间
'SCM_WZ_UOM',
'SHTB'); --UnitId,按接收计量单位转换逻辑
v_plan_storageId := storage_function('SHTB', to_char(:new.DHCKH)); --
insert into SCM_WZ_DemandPlan
(
--唯一编号,公司,业务组织,数据状态,数据版本,
id,
orgCode,
bizOrgCode,
status,
dataVersion,
--创建公司,创建人(编制人员),建立时间DATE(编制时间),修改人(UPDATE_BY),修改
createdOrgCode,
creatorCode,
createdDate,
redactorCode,
redateDate,
--直送计划编号,供应商编号,预计送货日期,材料编号,托板数
dDeliveryCode,
vendorCode,
deliverPlanDate,
materielCode,
palletQty,
--数量,采购单位流水(UomDetailEntity unitId),平均量,到货区域,到货仓库号,
deliverQty,
Unitid,
average,
toStockArea,
storageId,
--收料单号,收料单从表流水,计划状态,MQ操作日期,MQ状态
aSNCode,
aSNDetailId,
planStatus,
mQRecordDate,
mQStatus,
--MQ数量,MQ流水号,接收状态,接收数量,执行单位
mQCount,
mQId,
deliverStatus,
deliverQuantity,
impCompany,
--材料名称
materielName)
(
v_plan_uuid,
'SHTB',
null,
'20',
1,
----创建公司,创建人(编制人员),建立时间(编制时间 CHAR(14)),修改人
'SHTB',
:new.BZRY,
to_date(:new.BZSJ, 'YYYY/MM/DD'),
:new.UPDATE_BY,
:new.UPDATE_DATE,
--直送计划编号,供应商编号,预计送货日期(CHAR(8)),材料编号,托板数
:new.ZSJHBH,
:new.GYSBH,
to_date(:new.YJSHRQ, 'YYYY/MM/DD'),
:new.CLBH,
:new.TBS,
--数量,采购单位流水(NUMBER(12)),平均量,到货区域String(NUMBER(12)),到货仓
:new.SL,
v_plan_unitId,
:new.PJL,
to_char(:new.DHQY),
v_plan_storageId,
--收料单号,收料单从表流水String(NUMBER(12)),计划状态(状态),MQ操作日期
:new.SLDH,
to_char(:new.SLCBLS),
:new.ZT,
to_date(:new.MQ_OP, 'YYYY'),
:new.MQ_ST,
--MQ数量String(NUMBER(12)),MQ流水号String(NUMBER(22)),接收状态,接收数量
to_char(:new.MQ_COUNT),
to_char(:new.MQ_LSH),
:new.DELIVER_STATUS,
to_char(:new.DELIVER_QUANTITY),
:new.ZXDW,
--材料名称
v_materielName);
end;
这是用oracle10g中创建的触发器,大致就是在I_WZ2SC_SHJHZWJ表执行插入操作后,为
建立触发器的一般操作是用
create or replace trigger 触发器名
after insert on 表名//相应表上的操作
for each row
declare //声明变量
v_materielName SCM_WZ_DemandPlan.Materielname%TYPE;//用%TYPE绑定表中的字段
begin
//所要进行的操作
end;
alter trigger trig_transinfo_insert
on transinfo
for insert,update
as
print '开始执行触发器------------------------------'
print '临时表的内容::----------'
select * from inserted
print '-------------------'
declare @type varchar(20)
declare @transmoney money
declare @cardid varchar(20)
set @type=(select transtype from inserted )
set @transmoney=(select transmoney from inserted )
set @cardid=(select cardid from inserted )
print @type +' '+@cardid
if(@type='存入')
begin
update bank set currentmoney=
currentmoney+@transmoney where cardid=@cardid
select * from bank
end
else
begin
update bank set currentmoney=
currentmoney-@transmoney where cardid=@cardid
select * from bank
end
where cardid='8505 001' and transtype='支取'
print '触发器执行完毕'
go
从上可以看出两者的差别;对于变量的赋值有点区别之外,其他的语句基本上一致;