2013-03-26 48 views
0

如何在Dynamic SQL中編寫查詢,我遇到下面給出的錯誤。使用xml內容在Dynamic Sql中創建語句

EXECUTE IMMEDIATE 
'CREATE TABLE SAMPLE 
    SELECT EXTRACT (VALUE (d), '''//row/text()''').getstringval() 
    FROM (SELECT XMLTYPE ( '''<rows><row>''' 
    || REPLACE ('''venkat,vijay,bylla,12''', ''',''', '''</row><row>''') 
    || '''</row></rows>''' 
    ) AS xmlval 
    FROM DUAL) x, 
    TABLE (XMLSEQUENCE (EXTRACT (x.xmlval, '''/rows/row'''))) d'; 

的錯誤是:

Error(118,34): PLS-00103: Encountered the symbol "/" when expecting 
one of the following:  (- + case mod new null <an identifier>  
<a double-quoted delimited-identifier> <a bind variable> 

回答

1

你的報價是錯誤的,你需要別名column..eg:

SQL> begin 
    2 EXECUTE IMMEDIATE 
    3 'CREATE TABLE SAMPLE AS 
    4 SELECT EXTRACT (VALUE (d), ''//row/text()'').getstringval() a 
    5 FROM (SELECT XMLTYPE ( ''<rows><row>'' 
    6 || REPLACE (''venkat,vijay,bylla,12'', '','', ''</row><row>'') 
    7  || ''</row></rows>'' 
    8  ) AS xmlval 
    9  FROM DUAL) x, 
10  TABLE (XMLSEQUENCE (EXTRACT (x.xmlval, ''/rows/row''))) d'; 
11 end; 
12/

PL/SQL procedure successfully completed. 

SQL> select * from sample; 

A 
-------------------------------------------------------------------------------- 
venkat 
vijay 
bylla 
12 

,但爲什麼你想動態的創建表甲骨文?如果您正在考慮在代碼中動態創建表,那麼這是不好的做法,應該在oracle中避免(如果需要,可以使用全局臨時表)。

+0

噢好吧...我會嘗試實施全球臨時表...謝謝 – user1990383 2013-03-26 11:59:55