一个存储过程:带参数动态执行sql语句:Execute Immediate

王朝网络·mssql·作者佚名  2006-01-10
宽屏版  字体: |||超大  

根据客户需要,我们增加了一个统计表,用来汇总统计数据,统计数据的产生,需要根据一个基本表,动态执行sql语句.在存储过程中,动态生成sql语句然后执行,需要用到Execute Immediate命令.我想写一个通用的统计用存储过程,似乎不大好办,if语句的应用在所难免了.呵呵.

特此存档.

create or replace procedure P_INSERT_XT_TJ_MX(sDate in varchar2) is

--author:李春雷

--create time:2005.8.4

--purpose:更新xt_tj_mx表

sXh xt_tj.xh%type; --主表序号

sDwmc xt_tj.dwmc%type;

sDw xt_tj.dw%type;

sDwzd xt_tj.dwzd%type;

sTable xt_tj.hzbmc%type;

sSjzd xt_tj.sjzd%type;

sSqlStr varchar2(300);

iCount int;

cursor curSort is

select xh,dwmc,hzbmc,sjzd,dwzd,dw from xt_tj ;

begin

open curSort;

loop

fetch curSort into sXh,sDwmc,sTable,sSjzd,sDwzd,sDw;

exit when curSort%notfound;

sSqlStr := 'select count(*) from '|| sTable || ' where to_char('||sSjzd||','||'''YYYYMM'')=:sDate and '||sDwzd ||

' in (select dwxh from xt_dw connect by prior dwxh = dwfxh start with dwxh =:sDw)';

Execute Immediate sSqlStr into iCount using sDate,sDw;

delete from xt_tj_mx where fxh=sXh and sjz=sDate;

insert into xt_tj_mx(xh,fxh,hzsm,sjz)values(SEQ_XT_TJ_MX.NEXTVAL,sXh,iCount,sDate);

commit;

end loop;

end P_INSERT_XT_TJ_MX;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有