迭代批量收集表中的值 - extractvalue

时间:2016-01-20 12:07:26

标签: oracle plsql sqlplus

我有一块PL / SQL可以:

   SELECT *
     BULK COLLECT INTO table_1
     FROM XMLTABLE (
             '//Match'
             PASSING l_xml_string
             COLUMNS col_1 VARCHAR2 (8) PATH '@col_1' ,
                     col_2 VARCHAR2 (40) PATH '@col_2');

然后我使用XMLAGG将它们存储为XML变量。

我想加入一个视图的col_1值,但问题是当我使用EXTRACTVALUE函数时(来自聚合的xml)我得到一个可怕的解释计划(全表扫描使用索引)当我通过它时单个值 - 即使xml中有一条记录。

当我在输入此表之前进行提取(将其存储在变量中然后加入变量)时,它会采用正确的路径,但为此我将自己限制为1个结果(其中rownum< 2)当我需要删除此限制。

当我这样做时:

select col_1 
into l_col_1 from
TABLE (table_1);

显示:

ORA-01422: exact fetch returns more than requested number of rows

还有其他方法可以做到这一点或:

SELECT EXTRACTVALUE (data.COLUMN_VALUE .... 

0 个答案:

没有答案