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

我在创建Oracle进程时遇到编译错误,oracle,Oracle,我正在创建一个进程,它给出了编译错误 权利偏执缺失 行#=9列#=21错误文本=PL/SQL:ORA-00907:右侧缺失 括号 我在这里做错了什么您在这里缺少数据类型如下请为XMLTABLE列提供数据类型: 我在这里写了varchar2(30) 这是我的输出 不相关,但是:TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/yyyyy')可以简化为trunc(sysdate)无需将日期转换为varchar,只需将其转换回日期谢谢我更改了它,但当您使用非常旧

我正在创建一个进程,它给出了编译错误 权利偏执缺失

行#=9列#=21错误文本=PL/SQL:ORA-00907:右侧缺失 括号


我在这里做错了什么

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

这是我的输出

不相关,但是:
TO_DATE(TO_CHAR(sysdate,'DD/MM/YYYY'),'DD/MM/yyyyy')
可以简化为
trunc(sysdate)
无需将日期转换为varchar,只需将其转换回日期谢谢我更改了它,但当您使用非常旧的Oracle版本(例如9i)时,仍然会遇到同样的错误,请在你的问题中提到这一点。我仍然得到同样的错误。它给出重新错误的行是(“/DataSet/Document/DocumentRow”我已经附上了图片我不知道您在iam上使用的是哪个版本的Oracle9.2版本我使用的是Oracle Database 11g 11.1.0.7.0。您能提供代码吗again@reader由于您的版本非常旧,我认为我的代码将无法工作,因为语法在这段时间内发生了很大变化,所以请参考此链接并创建e代码根据以下链接:
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;
/ 
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;