触发器高手帮帮忙吧!请将sql2000下的触发器,转成oracle下,一定给分!!!!
CREATE TRIGGER NET_SK_DELETE ON [C_LSZ]
FOR DELETE AS
declare @bz char
declare @sy int
declare @rz int
select @rz=CKHS from C_RZB
if @rz=1
select @sy=max(C_NET_SKLSZ.CSY) from C_NET_SKLSZ,deleted where deleted.CPZBH=C_NET_SKLSZ.CPZBH
select @bz=C_NET_SKLSZ.CBZ from C_NET_SKLSZ where C_NET_SKLSZ.CSY=@sy
if @bz='Y'
INSERT C_NET_SKLSZ(CZH,CJZRQ,CPZBZ,CZY,CFSE,CBZ,CPZBH,CZPHM,CFKR,CFKRZH,CFKRKHH)
SELECT deleted.CZH,deleted.CJZRQ,deleted.CPZBZ,deleted.CZY,0 - deleted.CFSE,'N',deleted.CPZBH,deleted.CZPHM,C_NET_SKLSZ.CFKR,C_NET_SKLSZ.CFKRZH,C_NET_SKLSZ.CFKRKHH
FROM deleted,C_NET_SKLSZ
WHERE deleted.CKM LIKE '201%' AND ((deleted.CFSE>0 AND deleted.CHLBZ='0') OR (deleted.CFSE<0 AND deleted.CHLBZ='1')) AND C_NET_SKLSZ.CSY=@sy
else
delete from C_NET_SKLSZ where C_NET_SKLSZ.CSY=@sy
CREATE trigger NET_SK_INSERT
on C_LSZ
FOR INSERT AS
declare @rz int
declare @pzbh int
declare @fkr char(40)
declare @zh char(30)
declare @khh char(40)
select @rz=CKHS from C_RZB
select @pzbh = CPZBH from inserted
select @fkr = CHM, @zh = CZH, @khh = CKHH from C_FKDW where CPZBH = @pzbh
if @rz=1
INSERT C_NET_SKLSZ(CZH,CJZRQ,CPZBZ,CZY,CFSE,CFKR,CFKRZH,CFKRKHH,CBZ,CPZBH,CZPHM)
SELECT inserted.CZH,inserted.CJZRQ,inserted.CPZBZ,inserted.CZY,inserted.CFSE,@fkr ,@zh ,@khh ,'N',inserted.CPZBH,inserted.CZPHM
FROM inserted
WHERE ( inserted.CKM LIKE '201%') AND ((CFSE>0 AND CHLBZ='0') OR (CFSE<0 AND CHLBZ='1'))
问题点数:100、回复次数:5Top
1 楼iwo99(大肚翁)回复于 2003-12-01 19:39:46 得分 0
自己顶一下!!!Top
2 楼shishikeke(时时刻刻)回复于 2003-12-01 21:42:14 得分 30
其实oracle下的触发器和sql2000下的没有大的区别 ,有的只是语法的不通,自己对照一个oracle的触发器修改一下就ok了,@这个符号oracle的触发器好像不用的。
------------------------------------------------------
OTN 中文技术论坛
http://211.99.196.144:8090/forum1/frontshow/index.jsp
Top
3 楼iwo99(大肚翁)回复于 2003-12-02 08:43:19 得分 0
我自己改了,但出错了。希望各位帮帮忙啊!Top
4 楼shishikeke(时时刻刻)回复于 2003-12-02 10:58:40 得分 40
老大,哪里错了,提示什么,这里不贴出来,大家想帮你也无能为力啊。Top
5 楼lushangshu(乾三联)回复于 2003-12-02 16:50:46 得分 30
发贴的兄弟,问题解决了吗?
如果没有,我可以帮你!
Top




