ORACLE里面的存储过程(没有问题):
create or replace procedure SP_CL7200_BFBF
 (ps_sblb in jl_qianfda.jiafsblx%type,
ps_sbzcbh in jl_qianfda.jiafsbzch%type)
as
begin
--该存储过程用来将某个计量设备上安装的封印全部报废, 该存储过程应三水要求添加,
--给MIS系统程序调用,封印系统并无使用该存储过程。除三水外,其他地方也无需建该存储过程。
--ps_sblb:    设备类别,varchar2, '电能表' / '互感器' / '计量箱'
--ps_sbzcbh:  设别资产编号,varchar2
    declare
s_zcbh varchar2(20);
s_lyr varchar2(10);

cursor cur_bf is select zich,linyr from jl_qianfda 
where jiafsblx = ps_sblb 
and jiafsbzch = ps_sbzcbh 
and dangqzt = '运行';
    
begin
open cur_bf;
loop
fetch cur_bf into s_zcbh,s_lyr;
exit when cur_bf%notfound;

update jl_qianfda 
set dangqzt = '报废',
zhuangtrq = sysdate 
where zich = s_zcbh; insert into cl7200_smfyxjl (s_zcbh,d_czsj,n_czlb,s_sblb,s_sbbh,
s_czms,s_czr,s_glgzdh) values (
s_zcbh,sysdate,5,ps_sblb,ps_sbzcbh,'从计量管理系统执行',s_lyr,Null); dbms_output.put_line('封印 ' || s_zcbh || ' 已报废');
end loop;
close cur_bf;
end;
end;

解决方案 »

  1.   

    create procedure SP_CL7200_BFBF
    @ps_sblb [Type--自己选择],
    @ps_sbzcbh [Type--自己选择]
    as
    --该存储过程用来将某个计量设备上安装的封印全部报废, 该存储过程应三水要求添加,
    --给MIS系统程序调用,封印系统并无使用该存储过程。除三水外,其他地方也无需建该存储过程。
    --ps_sblb:    设备类别,varchar2, '电能表' / '互感器' / '计量箱'
    --ps_sbzcbh:  设别资产编号,varchar2
        declare @s_zcbh varchar(20),@s_lyr varchar(10)

    Declare cur_bf cursor for select zich,linyr from jl_qianfda 
    where jiafsblx = @ps_sblb 
    and jiafsbzch = @ps_sbzcbh 
    and dangqzt = '运行';
         Open cur_bf
    fetch cur_bf into @s_zcbh,@s_lyr
    while @@fetch_status = 0
    Begin
    update jl_qianfda 
    set dangqzt = '报废',
    zhuangtrq = sysdate 
    where zich = @s_zcbh insert into cl7200_smfyxjl (s_zcbh,d_czsj,n_czlb,s_sblb,
    s_sbbh,s_czms,s_czr,s_glgzdh) 
    values ( @s_zcbh,getdate(),5,@ps_sblb,@ps_sbzcbh,'从计量管理系统执行',@s_lyr,Null); --下面这个不知道什么意思!
    dbms_output.put_line('封印 ' || s_zcbh || ' 已报废'); fetch cur_bf into s_zcbh,s_lyr
    End

    close cur_bf
    Deallocate cur_bf
      

  2.   

    --下面这个不知道什么意思!
    dbms_output.put_line('封印 ' || s_zcbh || ' 已报废');
    fetch cur_bf into s_zcbh,s_lyr应该是:--下面这个不知道什么意思!
    dbms_output.put_line('封印 ' || s_zcbh || ' 已报废');
    fetch cur_bf into @s_zcbh,@s_lyr