这是SQL:
select 'create table XX_' || replace(replace(trim(table_id),'-','_'),'%','X') || '_LOOKUP as select * from prn_tcodes where trim(table_id) = ''' || trim(table_id) || ''';'
from prn_tcodes
group by table_id;
我希望执行生成的SQL语句,有没有办法?
我正在使用Oracle 10g
谢谢你,,,
答案 0 :(得分:3)
作为假脱机的替代方法,您可以将其作为匿名PL / SQL块运行(未经过测试!)
DECLARE
cursor all_codes
select 'create table XX_' ||
replace(replace(trim(table_id),'-','_'),'%','X') ||
'_LOOKUP as select * from prn_tcodes where trim(table_id) = ''' ||
trim(table_id) as sql_stmt
from prn_tcodes
group by table_id;
rec all_codes%ROWTYPE;
BEGIN
FOR rec IN get_objects LOOP
BEGIN
EXECUTE IMMEDIATE rec.sql_stmt;
END LOOP;
END;
/
(请注意,生成的语句不再包含尾随;
)
答案 1 :(得分:2)
将上述脚本假脱机到文件,然后执行该文件。
spool myoutput.sql
-- Your SQL here
spool off;
@myoutput;
答案 2 :(得分:0)