使用clob作为构造函数的参数的问题

时间:2016-07-06 13:39:11

标签: oracle plsql constructor clob

我有以下PL / SQL代码:

create type testingclob as object (
  member_value number,
  constructor function testingclob(
    i_aclob    clob
  ) return self as result
);
/
create type body testingclob as
  constructor function testingclob(
    i_aclob    clob
  ) return self as result
  is
  begin
    member_value := 0;
    return;
  end;
end;
/
declare 
   l_test testingclob;
begin

   l_test := new testingclob('some text');
end;

但是我收到了错误

ORA-06550: line 5, column 18:
PLS-00307: too many declarations of 'TESTINGCLOB' match this call
ORA-06550: line 5, column 4:

该类型的编译工作正常。但是看来我不能使用构造函数。有人知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

参数'some text'应声明为clob。

declare 
   l_param clob;
   l_test testingclob;
begin
   l_param:= 'some text';
   l_test := new testingclob(l_param);
end; 

默认情况下,系统提供默认构造函数,该构造函数接受与每个属性对应的参数,请参阅https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/10_objs.htm#i16312章节定义对象构造函数'。因此无法确定构造函数,因为它们都没有命中输入参数varchar2。

尝试

begin
   l_test := new testingclob(1);
end;

这是您的默认构造函数。