При выполнении следующего кода он просто сообщает, что процедура завершена, и не выводит информацию, которую я хочу (firstName, lastName), а затем другие значения из запроса выбора в таблице ниже.
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char)
AS
CURSOR quote_recs IS
SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r,
rolequote rq, actor a, movie m
where
rq.quoteID = q.quoteID
AND
rq.roleID = r.roleID
AND
r.actorID = a.actorID
AND
r.movieID = m.movieID
AND
a.actorID = id_actor;
BEGIN
FOR row IN quote_recs LOOP
DBMS_OUTPUT.PUT_LINE('a.firstName' || 'a.lastName');
end loop;
END PRINT_ACTOR_QUOTES;
/
При настройке вывода на сервер я получаю
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
много раз!
источник
set serveroutput on
команду перед выполнением процедуры в SQL * Plus.SELECT
оператор в командной строке SQL Plus, оператор SQL был выполнен, данные были возвращены, но данные не были отображены в SQL Plus? Это кажется маловероятным, если вы не играли сautotrace
настройками, и в этом случае вы могли видеть план запроса и статистику выполнения, а не результаты запроса. Однако мы начинаем довольно далеко уходить от вашего первоначального вопроса.источник
это утверждение
означает напечатать строку как есть ... удалите кавычки, чтобы значения были напечатаны. Итак, правильный синтаксис
источник
Задайте запрос, как показано ниже, в первой строке
SET SERVEROUTPUT ON
источник
Я использую Oracle SQL Developer,
В этом инструменте мне пришлось включить вывод СУБД, чтобы просматривать результаты, напечатанные dbms_output.put_line
Вы можете найти этот параметр в панели результатов, где отображаются другие результаты запроса. Итак, в панели результатов у меня есть 7 вкладок. 1-я вкладка называется «Результаты», следующая - «Вывод сценария» и так далее. Из этого вы можете найти вкладку с именем «Вывод СУБД», выберите эту вкладку, затем первый значок (выглядит как значок диалога) - Включить вывод СУБД . Щелкните этот значок. Затем вы выполняете PL / SQL, затем выбираете вкладку «Вывод СУБД», вы должны увидеть там результаты.
источник
Все они концентрируются на цикле for, но если мы используем обычный цикл, то нам пришлось бы использовать переменную записи курсора. Ниже приведен модифицированный код
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char) AS CURSOR quote_recs IS SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r, rolequote rq, actor a, movie m where rq.quoteID = q.quoteID AND rq.roleID = r.roleID AND r.actorID = a.actorID AND r.movieID = m.movieID AND a.actorID = id_actor; recd quote_recs%rowtype; BEGIN open quote_recs; LOOP fetch quote_recs into recs; exit when quote_recs%notfound; DBMS_OUTPUT.PUT_LINE(recd.firstName||recd.lastName); end loop; close quote_recs; END PRINT_ACTOR_QUOTES; /
источник