Выполнение PL / SQL завершено с предупреждением? - PullRequest
3 голосов
/ 25 марта 2012

Я набрал следующий код на отдельных страницах, там указано неправильное имя процедуры. При вводе вместе в одном рабочем пространстве в SQL Developer он говорит, что выполнение завершено с предупреждением. Кажется, что нет никакого вывода вообще.

Это упражнение колледжа, чтобы получить несколько значений из нескольких таблиц, используя одно значение, введенное пользователем - в данном случае ono.

Здесь мы должны получить название книги, заказанное количество и имя клиента, используя номер заказа (ono).

Это мой код:

create or replace procedure proc2 ( ono in number
                    , cname out varchar, book out varchar, qty out number) is
   temp number;
begin    
   select custid into temp from ordr where orderno = ono;
   select custname into cname from customer where custid = temp;
   select isbn,qtystock into temp,qty from order_list where orderno = ono;
   select title into book from books where isbn = temp;
end proc2;

и моя основная вызывающая функция:

set serveroutput on
declare
   cname varchar(7);
   book varchar(7);
   ono number;
   qty number;
begin
   ono := &ono; -- I even tried explicitly giving a value didn't work
   proc2(ono, cname, book, qty);
   dbms_output.put_line('customer name: '||cname||'book title :'||book||'quantity ordered   :'||qty);
end;

Процедура выполнена успешно, но я не могу найти ошибку в основной функции. Что вы думаете не так?

Даже когда я выполняю следующее, я получаю функцию успешно выполненной, а когда я выполняю основную функцию, я выполняюсь с предупреждением, я не понимаю, почему!

функция:

create or replace function totfun(ip in number) return number is
t number(5);
t1 number(5);
t2 number(5);
begin
select isbn,qtystock into t,t1 from order_list where orderno=ip;
select price into t2 from books where isbn=t;
return t1*t2;
end totfun;

основная функция:

set serveroutput on;
declare
ip number;
begin
ip:=&orderno;
dbms_output.put_line(totfun(ip));
end;

1 Ответ

1 голос
/ 26 марта 2012

Из руководства:

Перед выходом из подпрограммы присвойте значения всем формальным параметрам OUT.В противном случае соответствующие фактические параметры будут нулевыми.При успешном выходе PL / SQL присваивает значения фактическим параметрам.Если вы выходите с необработанным исключением, PL / SQL не присваивает значения фактическим параметрам.

Назначены ли значения для ваших выходных параметров?

Что такоеВаши выходные параметры перед выходом из proc2?

Может быть полезно отследить ваш код внутри процедуры proc2?

Каковы ваши предупреждения?

Предупреждения: полезно прочитать (ссылка)

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