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

Oracle ORA-06553: PLS-306: 选择对象类型实例时参数数量或类型错误

ASKTOM 2020-02-10
3063

问题描述

我们在测试从Ora 12.1升级到19时遇到了这种情况。
代码有什么问题?

专家解答

这看起来像出现在12.2的BUG 27653957。目前没有解决方法。

幸运的是,解决方法很简单: 从对象类型中删除构造函数!

CREATE OR REPLACE TYPE xx_note_typ force AS OBJECT 
( 
  note_id      NUMBER, 
  note_scope   NUMBER, 
  note_value   VARCHAR2(4000), 
  note_date    VARCHAR2(100)
) ;
/

CREATE OR REPLACE TYPE xx_note_arr_typ FORCE AS TABLE OF xx_note_typ; 
/

create table xx_CUSTOMER_NOTE_ALL 
( 
  id         NUMBER not null, 
  agent_id   NUMBER, 
  debtor_id  VARCHAR2(10), 
  serving_id NUMBER, 
  note_value VARCHAR2(4000), 
  note_scope NUMBER, 
  reg_date   TIMESTAMP(6) WITH TIME ZONE not null, 
  system_id  NUMBER not null, 
  ts         TIMESTAMP(6) WITH TIME ZONE not null 
) ;


DECLARE 
  l_result xx_note_arr_typ; 
BEGIN
  SELECT xx_note_typ(note_id => NULL, note_scope => NULL, note_value => NULL, note_date => NULL) 
    BULK COLLECT 
    INTO l_result 
    FROM xx_CUSTOMER_NOTE_ALL icn 
   WHERE (icn.note_scope = 0 AND icn.serving_id = 42) 
      OR (icn.note_scope = 1 AND icn.debtor_id = '42');    
END; 
/

PL/SQL procedure successfully completed.

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

评论