Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Help on Execute Immediate Dynamic Sql

user1849Nov 30 2011 — edited Nov 30 2011
Hi all

when i run the following Pl/SQL,nothing is happening

I want to pass array to following procedure
DECLARE
SQL_STMT      VARCHAR2(1000);
BEGIN
SQL_STMT  := 'Select '|| '''populate_table_test(''' || '|| chr(39)||id_name||chr(39)||' ||''','''||'|| chr(39)||attribute1||chr(39)||' ||''','''||'|| chr(39)||attribute2||chr(39)||' ||''');'''||' from table_test1';
dbms_output.put_line(sql_stmt);
execute immediate sql_stmt;
Exception when others then
dbms_output.put_line(sqlerrm);

end;
/
SQL> ed
Wrote file afiedt.buf

  1  Select 'populate_table_test('|| chr(39)||id_name||chr(39)||','||
  2  chr(39)||attribute1||chr(39)||','|| chr(39)||attribute2||chr(39)||');' from
  3* table_test
SQL> /

'POPULATE_TABLE_TEST('||CHR(39)||ID_NAME||CHR(39)||','||CHR(
------------------------------------------------------------
populate_table_test('AAA','AA','AA');
populate_table_test('AAA','AA','AA');
CREATE
  TABLE TABLE_TEST1
  (
    "ID_NO"      NUMBER(10,0)     ,
    "ID_NAME"    VARCHAR2(10 BYTE),
    "ATTRIBUTE1" VARCHAR2(10 BYTE),
    "ATTRIBUTE2" VARCHAR2(10 BYTE)
  );


Insert into TABLE_TEST1 (ID_NO,ID_NAME,ATTRIBUTE1,ATTRIBUTE2) values (null,'AAA','AA','AA');
Insert into TABLE_TEST1 (ID_NO,ID_NAME,ATTRIBUTE1,ATTRIBUTE2) values (null,'AAA','AA','AA');
commit;
CREATE TABLE TABLE_TEST
(ID_NO NUMBER(10) , 
id_NAME VARCHAR2(10) , 
ATTRIBUTE1 VARCHAR2(10), 
ATTRIBUTE2 VARCHAR2(10)
);

select * from "TABLE_TEST"; 


CREATE OR REPLACE TYPE T_TYPE IS OBJECT ( 
id_NAME VARCHAR2(10), 
ATTRIBUTE1 VARCHAR2(10), 
ATTRIBUTE2 VARCHAR2(10) 
) ;

Create or replace  type TB_T_TYPE as varray(200) of  T_TYPE ;


CREATE OR REPLACE
PROCEDURE POPULATE_TABLE_TEST (EXAMPLE IN TB_T_TYPE) AS 

begin 

FOR I IN 1..EXAMPLE.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(TREAT(EXAMPLE(I) AS T_TYPE).ID_NAME);
DBMS_OUTPUT.PUT_LINE(TREAT(EXAMPLE(I) AS T_TYPE).ATTRIBUTE1);
DBMS_OUtPUT.PUT_LINE(TREAT(EXAMPLE(I) AS T_TYPE).ATTRIBUTE2);
insert into TABLE_TEST(id_name,attribute1,attribute2) 
values (treat(example(i) as T_TYPE).id_NAME, 
treat(example(i) as T_TYPE).ATTRIBUTE1, 
treat(example(i) as T_TYPE).ATTRIBUTE2 
);
end loop;
end; 
Select 'populate_table_test('|| chr(39)||id_name||chr(39)||','||
chr(39)||attribute1||chr(39)||','|| chr(39)||attribute2||chr(39)||');' from
table_test

Edited by: user1849 on Nov 30, 2011 12:40 PM

Edited by: user1849 on Nov 30, 2011 1:18 PM
This post has been answered by JustinCave on Nov 30 2011
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 28 2011
Added on Nov 30 2011
13 comments
501 views