create or replace PROCEDURE systemxm(starttime VARCHAR2,
shendtime VARCHAR2,
gxstarttime VARCHAR2,
gxendtime VARCHAR2,
v_Num OUT VARCHAR2)AS
v_succeed VARCHAR2(1000);
v_fail VARCHAR2(1000);
v_sql VARCHAR2(1000);--动态sql条件
v_jj VARCHAR2(1000);
v_sql_where_str varchar(4000);--动态sql
BEGIN
v_sql:='';
if(starttime is not null) then
v_sql:=v_sql||' and a.CREATED >= to_date('||starttime||',''yyyy-MM-dd'' )';
end if;
if(shendtime is not null) then
v_sql:=v_sql||' and a.CREATED <= to_date('||shendtime||',''yyyy-mm-dd'' )+1';
end if;
if(gxstarttime is not null) then
v_sql:=v_sql||' and a.item_Employ >= to_date('||gxstarttime||',''yyyy-mm-dd'' )';
end if;
if(gxendtime is not null) then
v_sql:=v_sql||' and a.item_Employ <= to_date('||gxendtime||',''yyyy-mm-dd'')+1';
end if;
dbms_output.put_line(v_sql);--输出参数值
v_Num:='';
DECLARE
--类型定义
CURSOR c_job
IS
SELECT item_code FROM tlk_system_dic;
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row tlk_system_dic.item_code%type;
BEGIN
FOR c_row IN c_job
LOOP
v_sql_where_str:='SELECT COUNT( b.item_name),
b.item_name
FROM tlk_P_ExpertRegister a
INNER JOIN tlk_system_dic b
ON b.item_code='''||c_row.item_code
||''' WHERE a.item_Account =2 and a.item_jszVal LIKE ''%'||c_row.item_code||'%'''
||v_sql||' GROUP BY b.item_name';
DBMS_OUTPUT.PUT_LINE('output:'||v_sql_where_str ); --監視SQL語句
execute immediate v_sql_where_str INTO v_succeed,
v_fail; --执行SQL
v_Num:=v_Num||';'||v_succeed||','||v_fail;
END LOOP;
--抛出异常
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_fail := 0;
v_succeed := 0;
END;
dbms_output.put_line(v_Num);
END;