I am trying to achieve below scenario. How can I achieve below insert given below?
declare
v_insSql varchar2(1000);
v_table_name varchar2(50):='TEMP_TBL';
v_row Table_T1%ROWTYPE;
/* Just to avoid everyone's confusion, both table_t1 and temp_tbl are of same structure */
BEGIN
SELECT * INTO v_row FROM Table_T1 WHERE ROWNUM = 1;
v_insSql:= 'INSERT INTO '||v_table_name||' VALUES :l_row';
/* table_name will always be passed as variable */
EXECUTE IMMEDIATE v_insSql using v_row;
END;
Can someone pls help?
Don't use dynamic SQL; just use a normal SQL insert:
So, for some sample tables/data:
Then:
Outputs:
db<>fiddle here
If you want to have dynamic table names then white-list the tables so you don't need to use dynamic SQL:
db<>fiddle here