select count(*)/2480 from dm_inpatient where xx1!='-9999'
表dm_inpatient有178个像xx1这样的字段,上述语句需要变化的只有字段名(如 xx1!='-9999', xx2!='-9999',......),我将这178个字段的名称存到了表dm_temp中。我希望可以通过一个过程自动的实现上述功能,而不是将上述语句执行178遍。
请问各位大神有什么好办法,拜谢!
------解决方案--------------------
利用EXECUTE IMMEDIATE
------解决方案--------------------
动态SQL拼接SQL语句,然后利用EXECUTE IMMEDIATE 执行,你可以通过procedure或者匿名程序来实现
------解决方案--------------------
没看很明白 触发器可以嘛
------解决方案--------------------
create or replace procedure selectx(mail_file varchar2) as
m number;
begin
execute immediate 'select count(*) from dm_inpatient where '
------解决方案--------------------
mail_file
------解决方案--------------------
'=''-9999''' --此处一定要注意,你传入的mail_file值一定要是dm_inpatient的一个字段,否则会报错
into m;
insert into dm_temp values (mail_file, m);
commit;
end selectx;
declare
begin
for c1 in (select mail_file from yy) loop
selectx(c1.mail_file);
end loop;
end;