2015-09-15 102 views
-1

我有一些動態SQL的問題。 我創建表後,插入一些數據 - 它工作正常。 但我不知道如何顯示數據。我的代碼:輸出數據,動態sql

declare 
begin 
execute immediate 'create table name(tabl_name varchar2(30),id number)'; 

execute immediate 'insert into name(tabl_name,id) (select ''something'',id from table3)'; 
commit; 

現在我想顯示名稱表內容。怎麼做?我應該使用動態sql的遊標嗎?提前致謝。

+0

你就不能做「SELECT * FROM表名」? –

+0

如果沒有'into'子句,就不能在'PLSQL'的匿名塊中使用'select * ....'。 – Praveen

回答

1

您可以通過記錄使用遊標循環:

declare 
    v_tabl_name varchar2(30); 
    v_id number; 
    res_cur SYS_REFCURSOR; 
begin 
    execute immediate 'create table name(tabl_name varchar2(30),id number)'; 
    execute immediate 'insert into name(tabl_name,id) (select ''something'',id from table3)'; 
    open res_cur for 'select tabl_name, id from name'; 

    LOOP 
     FETCH res_cur INTO v_tabl_name, v_id; 
     EXIT WHEN res_cur%NOTFOUND; 
     dbms_output.put_line(v_tabl_name); 
     dbms_output.put_line(v_id); 
    END LOOP; 

    close res_cur; 

end; 
+0

謝謝Praveen:)它的工作原理與我想要的完全一樣。 – maciek2791