现有一个表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;
------解决方案--------------------
只是例子而已呀,去拼接字符串不就可以了,而且上面也没关联值呀,肯定不能这样写的