【问题标题】:Invalid identifier in Oracle SQL procedureOracle SQL 过程中的标识符无效
【发布时间】:2012-03-23 11:16:12
【问题描述】:

我收到错误(8,3):PL/SQL:SQL 语句被忽略和错误(8,10):PL/SQL:ORA-00904:“XMLELEMENT”:以下过程中的标识符无效:

    CREATE OR REPLACE PROCEDURE GETXMLTREE
    (
      p_ESTABELECIMENTOID IN NUMBER  
    , MYXML OUT VARCHAR2  
    )
    AS
    BEGIN
    SELECT XMLELEMENT --line 8
    into MYXML
        ("root",
          (select dbms_xmlgen.getxmltype 
            (dbms_xmlgen.newcontextfromhierarchy
              ('SELECT level,
                XMLElement("item",XMLAttributes(osusr_kfa_estabele.id as "id"),
                  XMLElement("content", XMLElement("name", nomecompleto)))          
                  from osusr_kfa_estabele
                  start with osusr_kfa_estabele.id = p_ESTABELECIMENTOID 
                  connect by nocycle prior osusr_kfa_estabele.id = osusr_kfa_estabele.estabelecimetnopaiid' ))
          from dual))
    from dual;

    END GETXMLTREE;

关于为什么会发生这种情况的任何线索? 谢谢

【问题讨论】:

  • DUAL 中没有定义 XMLELEMENT 字段。
  • 好的...那么我该如何绕过这个事实呢?

标签: oracle procedure


【解决方案1】:

你的 INTO 放错地方了。试试:

SELECT XMLELEMENT --line 8
        ("root",
          (select dbms_xmlgen.getxmltype 
            (dbms_xmlgen.newcontextfromhierarchy
              ('SELECT level,
                XMLElement("item",XMLAttributes(osusr_kfa_estabele.id as "id"),
                  XMLElement("content", XMLElement("name", nomecompleto)))          
                  from osusr_kfa_estabele
                  start with osusr_kfa_estabele.id = p_ESTABELECIMENTOID 
                  connect by nocycle prior osusr_kfa_estabele.id = osusr_kfa_estabele.estabelecimetnopaiid' ))
          from dual))
    into MYXML
    from dual;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多