2017-10-11 48 views
0
**create or replace procedure Xml_Table is 
begin 
    DECLARE 
l_xmltype XMLTYPE; 
BEGIN 

SELECT XMLELEMENT("employees", 
      XMLAGG(
      XMLELEMENT("employee", 
       XMLFOREST(
       e.empno AS "empno", 
       e.ename AS "ename", 
       e.job AS "job", 
       TO_CHAR(e.hiredate, 'DD-MON-YYYY') AS "hiredate" 
       ) 
      ) 
      ) 
     ) 
    INTO l_xmltype 
    FROM emp e; 
    INSERT INTO xml_tab VALUES (1, l_xmltype); 
    COMMIT; 
end Xml_Table;** 

在這個Xml_Table是我創建的過程。而Xml_tab是我在數據庫中創建的xml數據類型的表。還有一個問題是,我可以創建一個程序pl/sql,在這個程序中我可以刪除並創建新的xml類型表,而不是在程序之外執行。當我在pl/sql developer中執行以下代碼時,它會引發錯誤?

錯誤消息:PLS-00103:按照程序APPS.XML_TABLE

錯誤編譯錯誤出現符號需要下列之一,當 「檔案結尾」:

 (begin case declare end exception exit for goto if loop mod 
     null pragma raise return select update while with 
     <an identifier> <a double-quoted delimited-identifier> 
     <a bind variable> << continue close current delete fetch lock 
     insert open rollback savepoint set sql execute commit forall 
     merge pipe purge 
+0

刪除行1和2,它應該工作。 –

回答

0
Try this: 
create or replace procedure Xml_Table as 
/* 
begin --> REMOVE 
DECLARE --> REMOVE 
*/ 
l_xmltype XMLTYPE; 
BEGIN 
... 
+0

非常感謝你的工作。有沒有辦法可以在程序中包含CREATE AND DROP XML表。 –

+0

您可以使用EXECUTE IMMEDIATE:立即執行'drop table mytable';立即執行'create table mytable(第1列整數等等)';.請投票和/或接受答案。 – Yellow75

相關問題