在Oracle中执行以下语句创建存储过程 根据归档份数判断,如果只有一份则为正本,如果有多份 第一份为正本其余都显示为副本
CREATE OR REPLACE PROCEDURE "PRINTJIBEIXUHAO6CM_VOL10" (dids in varchar2, cur out sys_refcursor )
AS
v_ename varchar2(200);
usercodevar varchar2(200);
ls_qzh varchar2(200);
ls_flh varchar2(200);
ls_ajh varchar2(200);
ls_bgqx varchar2(200);
ls_title varchar2(800);
ls_xmh varchar2(64);
ls_jzh varchar2(4);
llDID number;
ll_duenum number;
ll_gdfs number;
v_duenumname varchar2(200);
v_tablename varchar2(20);
p_sql Varchar2(4000);
d_volxh number;
type rc_type is ref cursor;
mycur rc_type;
BEGIN
d_volxh:=1;
p_sql:='delete from TEMP_VOLPRINT_10_6_BH';
Execute Immediate p_sql;
p_sql:='SELECT BGQX,QZH,FLH,AJH,TITLE,GDFS,F1 FROM D_VOL10 WHERE status=0 and F6=''6CM'' and DID in ( '||dids||')';
open mycur for p_sql ;
fetch mycur into ls_bgqx,ls_qzh,ls_flh,ls_ajh, ls_title,ll_gdfs,ls_xmh;
while (mycur%found)
loop
dbms_output.put_line('0');
if (ll_gdfs>=1) then
p_sql:='insert into TEMP_VOLPRINT_10_6_BH(volbgqx,volqzh,volflh,volxmh ,volajh,voltitle ,volzfb) values(:1,:2,:3,:4,:5,:6,:7)';
dbms_output.put_line(p_sql);
Execute Immediate p_sql using ls_bgqx,ls_qzh,ls_flh,ls_xmh,ls_ajh,ls_title,'正本';
end if ;
while (ll_gdfs>1)
loop
p_sql:='insert into TEMP_VOLPRINT_10_6_BH(volbgqx,volqzh,volflh,volxmh ,volajh,voltitle ,volzfb) values(:1,:2,:3,:4,:5,:6,:7)';
dbms_output.put_line(p_sql);
Execute Immediate p_sql using ls_bgqx,ls_qzh,ls_flh,ls_xmh,ls_ajh,ls_title,'副本';
d_volxh:=d_volxh+1;
commit;
ll_gdfs:=ll_gdfs-1;
end loop;
fetch mycur into ls_bgqx,ls_qzh,ls_flh,ls_ajh, ls_title,ll_gdfs,ls_xmh;
end loop;
close mycur;
dbms_output.put_line('3');
open cur for 'select volbgqx as 案卷_保管期限,volqzh as 案卷_全宗号,volxmh as 案卷_项目代号,volflh 案卷_分类号,volajh as 案卷_案卷号,voltitle as 案卷_题名,volzfb as 案卷_备注 from TEMP_VOLPRINT_10_6_BH';
end;
---------------------
在数据库中创建完成后在报表中调用
D_VOL21JIBEI6--param--dids