используя типы записей - объявление и тело в пакете - PullRequest
0 голосов
/ 06 октября 2011

У меня проблема с моим пакетом, он выглядит следующим образом:

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 голосов
/ 06 октября 2011

Ваш пример кода пакета не является синтаксически допустимым кодом 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-пакетах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...