暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在Oracle存储过程中返回CLOB数据类型作为输出参数?

askTom 2017-04-05
1098

问题描述

我想从oracle存储过程返回CLOB数据类型 (XML数据) 的输出参数。

我的程序看起来像这样

创建或替换过程myProcedure
(
myParam1的数量
,myParam2的数量
,我的param3 OUT CLOB
) 作为xml_bits CLOB;
开始

选择xml_bits中的xmldataColumn
从myTable中,其中id = myParam1和SESSION_ID = myParam2;

IMPCPM_XML := xml_bits;
结束myProcedure;
我编译了这个,当我尝试执行时,它给了我以下错误。

精确获取返回的行数超过请求的行数
如何将大XML数据作为out param返回?

提前谢谢。

专家解答

您的过程没有任何问题-导致问题的是数据 (和参数)

SQL> create table mytable
  2  (id int, session_id int, xmldataColumn clob );

Table created.

SQL>
SQL> insert into mytable values (1,1,'blahblah');

1 row created.

SQL>
SQL> create or replace PROCEDURE myProcedure
  2  (
  3   myParam1 IN NUMBER
  4  ,myParam2 IN NUMBER
  5  ,myParam3 OUT CLOB
  6  ) AS
  7  xml_bits CLOB;
  8  BEGIN
  9  select xmldataColumn into xml_bits
 10  from myTable WHERE id = myParam1 AND SESSION_ID = myParam2;
 11
 12  myParam3 := xml_bits;
 13
 14  END;
 15  /

Procedure created.

SQL>
SQL> variable c clob
SQL> exec myProcedure(1,1,:c);

PL/SQL procedure successfully completed.

SQL> print c

C
--------------------------------------------------------------------------------
blahblah

SQL>
SQL> insert into mytable values (1,1,'blahblah');

1 row created.

SQL> exec myProcedure(1,1,:c);
BEGIN myProcedure(1,1,:c); END;

*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "MCDONAC.MYPROCEDURE", line 9
ORA-06512: at line 1

复制


PLSQL中的任何select-into都必须从数据库中获取 * single *,否则将出现错误。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论