fetch table name from a column for from clause

无人久伴 提交于 2019-11-29 13:05:09
Vimal Bhaskar

@Akshay,

Please find the code below for your reference.

Create or replace procedure create_cursor is
l_statement varchar2(32767);
cursor v_records is
  select * from t;
begin
for temp in v_records
loop
  l_statement := 'INSERT INTO myTable (id, name) select '||temp.id||','
   ||temp.name|| ' from ' || temp.table1 
   || ' where ' || temp.where_clause;

  execute immediate l_statement;
  end loop;
end;
/
Rene

You need dynamic sql to do this:

CREATE OR REPLACE PROCEDURE create_cursor
IS
  l_statement VARCHAR2(32767);
  CURSOR v_records
  IS
    SELECT * FROM t;
BEGIN
  FOR temp IN v_records
  LOOP
    l_statement := 'INSERT INTO myTable (id, name)
          select id, name from ' || temp.table || 
          ' where ' || temp.where_clause;
    EXECUTE immediate l_statement;
  END LOOP;
END;
/
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!