当前位置: 代码迷 >> Oracle开发 >> 电信项目的一个存储过程sql话语,求大神指导。
  详细解决方案

电信项目的一个存储过程sql话语,求大神指导。

热度:66   发布时间:2016-04-24 07:24:49.0
电信项目的一个存储过程sql语句,求大神指导。。。。。。。。。。。。。。。。
现有一个表tb_compare_script,其中一个字段存储的是一条sql查询语句,这条sql语句从rim_account_2012,bims_account_2012两个表中查询数据。比如:1. select count(1) from rim_account_2012 where city='崇左'
  2. SELECT b.* FROM bims_account_2012 b WHERE NOT EXISTS (SELECT 1 FROM rim_account_2012 a WHERE upper(a.account)=upper(b.account) and a.city=b.city) and b.city='崇左'

这样,有的是统计,有的是查询详细的数据。 现在要写一个存储过程,从tb_compare_script表中查询出sql语句,执行,从结果中取得数据,插入tb_compare 和tb_output 数据表中。tb_compare 表存储的是统计数据,而tb_oupt表则要存储统计和详细数据。

现在我不懂的地方是:从tb_compare_script中查询出来的sql语句怎么在存储过程中执行,再取得数据,进而把数据插入tb_compare表 和tb_output表中。还有要怎么分辨哪条数据该存在哪个表中呢,不知道我描述清楚了没有?希望大神指教,刚毕业,压力很大啊!

------解决方案--------------------
SQL code
--帮你写了个例子,只是不知道你的字符串的SELECT b.* FROM bims_account_2012 b WHERE NOT EXISTS (SELECT 1 FROM rim_account_2012 a WHERE upper(a.account)=upper(b.account) and a.city=b.city) and b.city='崇左',如何进行更新或新增到你的表,其实都差不多的,不懂再问吧create table t(id int,val varchar2(2000));create table t1(id int,empcou int,empdescr varchar2(2000));insert into t values(1,'select count(1) from emp');insert into t1 values(1,0,'');declare     strsql varchar2(2000);    cou varchar2(20);    cursor c is select * from t;begin    for i in c    loop         if instr(i.val,'count')>1 then            execute immediate i.val                into cou;            update t1 set empcou=cou where t1.id=1;        else            dbms_output.put_line('对于字符串你打算如何统计呢?');        end if;    end loop;end;/select * from t1;
------解决方案--------------------
只是例子而已呀,去拼接字符串不就可以了,而且上面也没关联值呀,肯定不能这样写的
  相关解决方案