Как сказал @FDavidov, вам нужно
a package specification
part
и
должен сохранить ваш текущий код в package body
части, начиная с
create or replace package body MONITORFLUSSI as ...
Место, где вы получаете ошибки, может иногда сбивать с толку в Oracle. Вы получаете ошибку из-за отсутствия ключевого слова body
между create or replace package
и MONITORFLUSSI as
в первой строке. После добавления body
вы получите
Ошибка (1,14): PLS-00201: должен быть объявлен идентификатор «MONITORFLUSSI»
Ошибка (1,14): PLS-00304: не удается скомпилировать тело 'MONITORFLUSSI'
без его спецификации
Затем создайте specification part
помимо body part
пакета и
в body part
вам нужно вернуть значения вашего столбца 'в некоторую переменную (и)
с помощью INTO Clause
или Cursor
:
create or replace package MONITORFLUSSI as
procedure get_monitorflussi(dataSegnalazione in date, compagnia in varchar2, tabella in varchar2, daInviare in number, o_tabella out varchar2 );
procedure get_monitorflussi(daInviare in number, o_tabella out varchar2 );
end MONITORFLUSSI;
create or replace package body MONITORFLUSSI as
procedure get_monitorflussi(dataSegnalazione in date, compagnia in varchar2, tabella in varchar2, daInviare in number, o_tabella out varchar2 ) is
begin
for c in ( select * from monitor_flussi t where t.daInviare = daInviare )
loop
o_tabella := c.tabella;
end loop;
end;
procedure get_monitorflussi(daInviare in number, o_tabella out varchar2 ) is
begin
select t.tabella into o_tabella from monitor_flussi t where t.daInviare = daInviare;
end;
end MONITORFLUSSI;
В которой я переопределил процедуру get_monitorflussi
для обоих случаев
INTO Clause
и Cursor
.