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

Oracle 来自java的anytype for anydataset

ASKTOM 2019-05-22
624

问题描述

你好,汤姆 :)

我尝试在java存储过程中制作anytype,并使用它在PL/SQL中创建anydataset。但我得到错误ORA-22625。为什么会发生此错误,如何解决?我根据指南来做,例如https://docs.oracle.com/database/121/JJDBC/oraint.htm#JJDBC28154,示例4-2和4-3。
脚本https://livesql.oracle.com/apex/livesql/s/ie97h511l4nyenahzz0kxb3lp在Oracle数据库12.1上重现错误,但看起来像LiveSQL不支持java,所以错误那里不是真实的。
这个在java中创建的anytype看起来不错,我在PL/SQL中检查了它的结构。
如果我在PL/SQL中创建anytype,它可以正常工作。

谢谢你这些年来的出色工作,汤姆!:)


专家解答

我可以重现这个问题。我不确定为什么要得到这个; ANYTYPE/ANYDATASET并不是我的强项;)

我在内部打听。

也就是说,如果你使用纯PL/SQL,这是可行的-为什么你使用Java存储过程?

将Java中的PL/SQL粘贴回PL/SQL,对我来说没有错误:

DECLARE 
  atyp anytype; 
  outset anydataset ; 
BEGIN 
 
  begin
    anytype.begincreate( dbms_types.typecode_object, atyp );
    atyp.addattr
    ( 'f1'
    , dbms_types.typecode_number
    , null
    , null
    , null
    , null
    , null
    ) ;
    atyp.addattr
    ( 'f2'
    , dbms_types.typecode_varchar2
    , NULL
    , NULL
    , 100
    , null
    , null
    ) ;
    atyp.endcreate;
  end;
  
  anydataset.begincreate( dbms_types.typecode_object, atyp, outset ); 
  for i in 1 .. 5 
  loop 
    outset.addinstance; 
    outset.piecewise(); 
    outset.setnumber( i ); 
    outset.setvarchar2( 'row: ' || to_char( i ) ); 

  end loop; 
  outset.endcreate; 

  dbms_output.put_line ( 'Finished' );
END ; 
/

Finished
复制


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论