【问题标题】:XMLTABLE in oracle - XQuery dynamic type mismatch: expected singleton sequence - got multi-item sequenceoracle 中的 XMLTABLE - XQuery 动态类型不匹配:预期的单例序列 - 得到多项序列
【发布时间】:2014-05-01 16:58:56
【问题描述】:
Declare
lv_xmldata XMLType := XMLType('
<ProviderGroupScopeOfPractice>
<Records>
  <Record bgid="1" ggid="39"/>
  <Record bgid="2" ggid="0"/>
  <Record bgid="3" ggid="0"/>
  <Record bgid="1" ggid="35"/>
</Records>
</ProviderGroupScopeOfPractice>
');

v_provider_Group_Id  Number(10);
v_resource_Id Number(10);
v_count Number (10);
p_region_id number(5); 
p_revision_id number(5);
p_bg_revision_id number(5);
p_scp_classification_id number(3);
p_facility_id VARCHAR2(3);
p_provider_group_id Number(10);
temp number;


Begin
  p_region_id :=51; 
  p_revision_id :=53; 
  p_bg_revision_id :=1; 
  p_scp_classification_id:= 2; 
  p_facility_id :='STR'; 
  p_provider_group_id := 211;

INSERT
INTO BG_GDLINE_SCOPE_GROUP_XREF
  (
    REGION_ID,
    REVISION_ID,
    BG_REVISION_ID,
    FACILITY_ID,
    SCP_CLASSIFICATION_ID,
    PROVIDER_GROUP_ID,
    BG_CLASSIFICATION_ID,
    GUIDELINE_GROUP_ID,
    CREATE_USER_ID,
    CREATE_TS,
    UPDATE_USER_ID,
    UPDATE_TS
  )
  SELECT
      p.p_region_id,
      p.p_revision_id,
      p.p_bg_revision_id,
      p.p_facility_id,
      p.p_scp_classification_id,
      p.p_provider_group_id,      
      bgDetails.bgid,
      bgDetails.ggid,  
      'user1',
      Sysdate,
      'user1',
      Sysdate
  FROM ( SELECT p_region_id,
            p_revision_id,
            p_bg_revision_id,
            p_facility_id,
            p_scp_classification_id,
            p_provider_group_id
      FROM DUAL) p, 
      (SELECT b.bgid, b.ggid
        FROM XMLTABLE(
                '/ProviderGroupScopeOfPractice/Records' 
                PASSING lv_xmldata
                columns bgid number(3) PATH 'Record/@bgid' ,
                 ggid number(5) PATH 'Record/@ggid' 
                ) b
      ) bgDetails
             ;
end;

我得到错误:

Error report:
ORA-19279: XPTY0004 - XQuery dynamic type mismatch: expected singleton sequence - got     multi-item sequence
ORA-06512: at line 33
19279. 00000 -  "XQuery dynamic type mismatch: expected singleton sequence - got multi-    item sequence" 
*Cause:    The XQuery sequence passed in had more than one item.
*Action:   Correct the XQuery expression to return a single item sequence.

请指教...

谢谢

【问题讨论】:

    标签: oracle plsql xmltable


    【解决方案1】:

    知道了……下面的效果很好……

    FROM ( SELECT p_region_id,
                p_revision_id,
                p_bg_revision_id,
                p_facility_id,
                p_scp_classification_id,
                p_provider_group_id
          FROM DUAL) p, 
          (SELECT b.bgid, b.ggid
            FROM XMLTABLE(
                    '/ProviderGroupScopeOfPractice' 
                    PASSING lv_xmldata
                     COLUMNS records XMLTYPE PATH 'Records') r,
                    XMLTABLE ( 'Records/Record'
                                     PASSING r.records
                                     COLUMNS bgid  NUMBER (3) PATH '@bgid',
                                            ggid  NUMBER (5) PATH '@ggid'
                                            )b
          ) bgDetails;
    

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 2015-09-04
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多