我在创建Oracle Proceedure时遇到编译错误

时间:2018-04-17 12:12:50

标签: oracle

我创建了一个程序,它给出了编译错误 右副修护缺失

  

行#= 9列#= 21错误文本= PL / SQL:ORA-00907:错过了   括号

CREATE OR REPLACE PROCEDURE user1.trns (XMLDATA XMLTYPE) 
IS
BEGIN

        UPDATE table1 SET T$fld1 = 1, T$dat1 = TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/YYYY') 
        WHERE  table1.T$docn IN
            (
                SELECT DISTINCT docn 
                FROM XMLTABLE  
                    ('/DataSet/Document/DocumentRow'
                        PASSING XMLDATA COLUMNS  
                        docn PATH '@DOCN' 
                    )  
            );

        COMMIT;

END  trns;
/ 

我在这里做错了什么

1 个答案:

答案 0 :(得分:1)

缺少 数据类型,如下所示,请为XMLTABLE列提供数据类型 : 在这里我写了 varchar2(30)

CREATE OR REPLACE PROCEDURE user1.trns (XMLDATA XMLTYPE) 
IS
BEGIN

        UPDATE table1 SET T$fld1 = 1, T$dat1 = TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/YYYY') 
        WHERE  table1.T$docn IN
            (
                SELECT DISTINCT docn 
                FROM XMLTABLE  
                    ('/DataSet/Document/DocumentRow'
                        PASSING XMLDATA COLUMNS  
                        docn varchar2(30) PATH '@DOCN' 
                    )  
            );

        COMMIT;

END  trns;

这是我的输出 Here is my output