- 论坛徽章:
- 0
|
我在触发器作了一个关联修改,其中用到了一个游标,在公司测试的时候没有问题,但是由于公司的版本是windows下面的11.9,而客户那里是solaris8下面的12.0,结果导致以下错误
客户端如下,
DB_library error:
Attempt to initiate a new SQL Server operation with results pending.
服务器上错误如下:
A client process exited abnormally, or a network error was encountered. Unless other errors occurred, continue processing normally.
01:00000:00019:2003/12/19 10:05:34.45 server Error: 1608, Severity: 18, State: 4
触发器代码如下:
CREATE TRIGGER CROSS.TRIG_PXDL ON CROSS.PXDL
FOR UPDATE AS
DECLARE @PXDL_BH VARCHAR(32)
DECLARE @PXDL_BH_UPDATED VARCHAR(32)
DECLARE @PXDL_MC VARCHAR(32)
DECLARE @PXDL_MC_UPDATED VARCHAR(32)
DECLARE @PXDL_SSJSBH VARCHAR(32)
DECLARE @PXDL_SSJSBH_UPDATED VARCHAR(32)
DECLARE @PXDL_SSJSMC VARCHAR(32)
DECLARE @PXDL_SSJSMC_UPDATED VARCHAR(32)
DECLARE @IFBHUPDATED VARCHAR(32)
DECLARE @IFSSJSBHUPDATED VARCHAR(32)
DECLARE @PXDL VARCHAR(32)
DECLARE @COUNT INT
IF UPDATE(BH)
BEGIN
SELECT @PXDL_BH = BH FROM deleted
SELECT @PXDL_BH_UPDATED = BH FROM inserted
select @COUNT=@@rowcount
select @PXDL ='触发配线条数='+convert(char,@COUNT)
print @PXDL
declare cur_pxdl_bh cursor for
select BH,SSJSBH,SSJSMC from deleted for update of BH,SSJSBH,SSJSMC
declare cur_pxdl_bh_updated cursor for
select BH,SSJSBH,SSJSMC from inserted for update of BH,SSJSBH,SSJSMC
open cur_pxdl_bh
fetch cur_pxdl_bh into @PXDL_BH,@PXDL_SSJSBH,@PXDL_SSJSMC
open cur_pxdl_bh_updated
fetch cur_pxdl_bh_updated into @PXDL_BH_UPDATED,@PXDL_SSJSBH_UPDATED,@PXDL_SSJSMC_UPDATED
while (@@sqlstatus=0)
begin
if @PXDL_BH_UPDATED=@PXDL_BH
begin
print '配线电缆编号没有改变'
end
else
begin
UPDATE CROSS.DLD SET BH = @PXDL_BH_UPDATED+RIGHT(BH,4),SSDLBH=@PXDL_BH_UPDATED,
SSJSBH=@PXDL_SSJSBH_UPDATED,SSJSMC=@PXDL_SSJSMC_UPDATED WHERE SSDLBH = @PXDL_BH
UPDATE CROSS.JT SET BH = @PXDL_BH_UPDATED+RIGHT(BH,5),SSDLBH=@PXDL_BH_UPDATED,
SSJSBH=@PXDL_SSJSBH_UPDATED,SSJSMC=@PXDL_SSJSMC_UPDATED WHERE SSDLBH = @PXDL_BH
UPDATE CROSS.CABLETHREAD_CCPPORT SET OWERCABLE = @PXDL_BH_UPDATED WHERE OWERCABLE = @PXDL_BH
end
PRINT @PXDL_BH
fetch cur_pxdl_bh into @PXDL_BH,@PXDL_SSJSBH,@PXDL_SSJSMC
fetch cur_pxdl_bh_updated into @PXDL_BH_UPDATED,@PXDL_SSJSBH_UPDATED,@PXDL_SSJSMC_UPDATED
end
if(@@sqlstatus=1)
print "CHU CUO LE"
if(@@sqlStatus=2)
print "UPDATE COMPLETE"
close cur_pxdl_bh
close cur_pxdl_bh_updated
END
IF UPDATE(PXDLMC)
BEGIN
SELECT @PXDL_MC = PXDLMC FROM deleted
SELECT @PXDL_MC_UPDATED = PXDLMC FROM inserted
declare cur_pxdl cursor for
select BH from inserted for update of BH
open cur_pxdl
fetch cur_pxdl into @PXDL_BH_UPDATED
while (@@sqlstatus=0)
begin
if @PXDL_MC=@PXDL_MC_UPDATED
begin
print '配线电缆名称没有改变'
end
else
begin
UPDATE CROSS.DLD SET SSDLMC = @PXDL_MC_UPDATED WHERE SSDLBH = @PXDL_BH_UPDATED
UPDATE CROSS.JT SET SSDLMC = @PXDL_MC_UPDATED WHERE SSDLBH = @PXDL_BH_UPDATED
end
PRINT @PXDL_BH
fetch cur_pxdl into @PXDL_BH_UPDATED
end
if(@@sqlstatus=1)
print "CHU CUO LE"
if(@@sqlStatus=2)
print "UPDATE COMPLETE"
close cur_pxdl
END |
|