使用记录类型 - 包中的声明和正文

时间:2011-10-05 21:09:02

标签: java oracle plsql

我的包装有问题,看起来像:

create or replace
PACKAGE pac AS
  TYPE A IS RECORD
(
  aa VARCHAR2(255)
);

 TYPE B is ARRAY(1) of A;

 PROCEDURE proc1( som OUT B);

然后当我创建它失败时,这个记录类型有问题..

我这样做是因为那时在java中我做了

call = connection.prepareCall(...);
call.registerOutParameter(1, Types.ARRAY,...);
call.execute();
array = call.getArray(1);

1 个答案:

答案 0 :(得分:0)

您的示例包代码不是语法上有效的PL / SQL代码,您不提供错误详细信息。以下是我猜你要做的事情:

/* First part of a package is a specification that declares public items 
   that can be called outside of the package. */
create or replace package pac as

  type a is record (
    aa varchar2(255)
  );

 type b is array(1) of a;

 procedure proc1(som out B);

end;
/

/* Second part is a body that defines cursors and subprograms (in this case 
   proc1-procedure). */
create or replace package body pac as

  procedure proc1(som out b) as
    v_a a;
  begin
    v_a.aa := 'foo';
    som := b(v_a);
  end;

end;
/

declare
  v_som pac.b;
begin
  pac.proc1(v_som);
  dbms_output.put_line(v_som(1).aa); /* prints foo */
end;
/

另请参阅Oracle有关PL/SQL packages

的文档