【发布时间】:2017-01-31 03:43:01
【问题描述】:
我想遍历所有表并将 ID 和表名复制到一个表中。 由于我必须使用变量作为表名,因此我尝试使用 IMMEDIATE EXECUTE。但是对于动态 SQL,INSERT INTO 语句只允许单行。
下面的 SQL 语句就是它,if IMMEDIATE EXECUTE 将允许 INSERT INTO 多行。
DECLARE
sqlStat VARCHAR2(500);
BEGIN
FOR TName IN (
SELECT TABLE_NAME FROM all_tab_cols WHERE column_name='ID'
)
LOOP
sqlStat := 'INSERT INTO storeTab (ID,TABLE_NAME) SELECT ID, '' :1 '' FROM :2';
EXECUTE IMMEDIATE sqlStat USING TName.TABLE_NAME,TName.TABLE_NAME;
END LOOP;
END;
如何循环遍历表并收集记录?
【问题讨论】: