2017-02-18 54 views
0

我想創建一個表使用下面的代碼。嘗試使用執行立即創建表

set serveroutput on; 
DECLARE 
cursor c1 is select '''create table demo1 (demo varchar2(100))''' c2 from dual; 
testvar c1%rowtype; 
BEGIN 
open c1; 
fetch c1 into testvar; 
close c1; 
execute immediate testvar.c2; 
END; 

,但它給

ORA-00900:無效的SQL語句 ORA-06512:在第8行 00900. 00000 - 「無效的SQL語句」

有什麼不對這個代碼。

+2

擺脫陳述的附加引號。 –

+0

您似乎對字符串文字和字符串變量之間的區別感到困惑。一個變量不包括單引號,即使這個值是從一個確實(必須)擁有它們的文字中分配的。 –

回答

3

除了這三行代碼之外,你只需要動態使用PLSQL塊即可。無需從雙重選擇。

declare 
vsql varchar2 (100) := 'create table demo1 (demo varchar2(100))'; 
begin 
execute immediate vsql; 
end; 

注意:從select中選擇create table語句沒有任何意義。如果您有任何其他具體要求,請提及,以便人們可以在此爲您提供幫助。

順便說一句,你會阻止工作simplly一旦你刪除多餘的'由威廉

set serveroutput on; 
DECLARE 
cursor c1 is select 'create table demo1 (demo varchar2(100))' c2 from dual; 
testvar c1%rowtype; 
BEGIN 
open c1; 
fetch c1 into testvar; 
close c1; 
execute immediate testvar.c2; 
END 

提及;