Search code examples
sqldatabaseoracle-databaseplsqlprocedure

fetch table name from a column for from clause


I have a view t with me which has a column for table name and another column which has where clause condition.

    id| name|table_in| where_clause

    1 | Sam | t1 | age = 22

    2 | John| t2 | age = 23 and sex = 'male'

and so on...

Now, I have put the records in a cursor and I want to run each query.

    create or replace procedure create_cursor 
    is

    CURSOR v_records is
    select * from t ;

    begin

    FOR temp IN v_records LOOP
        INSERT INTO myTable (id, name)
        select temp.id, temp.name 
        from temp.table where temp.where_clause;

        END LOOP;


    end;
    /

myTable is another table in which I want to put the records for next purpose.


Solution

  • @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;
    /