Ao executar o código a seguir, ele apenas diz que o procedimento está concluído e não imprime a informação que eu quero (firstName, lastName) e depois os outros valores da consulta select em uma tabela abaixo.
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;
/
Ao configurar a saída do servidor, recebo
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
várias vezes!
fonte
set serveroutput on
comando antes de executar o procedimento no SQL * Plus.SELECT
declaração está incorreta e provavelmente não possui uma condição de junção. Você deseja refinar sua consulta (que pode ser executada separadamente sem o procedimento) até que a consulta retorne os dados esperados.fonte
esta afirmação
significa imprimir a string como está .. remova as aspas para obter os valores a serem impressos. Portanto, a sintaxe correta é
fonte
Defina a consulta como abaixo na primeira linha
fonte
Estou usando o Oracle SQL Developer,
Nesta ferramenta, tive que habilitar a saída do DBMS para visualizar os resultados impressos por dbms_output.put_line
Você pode encontrar esta opção no painel de resultados, onde outros resultados da consulta são exibidos. então, no painel de resultados, tenho 7 guias. 1ª guia nomeada como Resultados, a próxima é Saída do script e assim por diante. Fora disso, você pode encontrar uma guia chamada "Saída DBMS" selecione esta guia, então o primeiro ícone (parece um ícone de diálogo) é Habilitar Saída DBMS . Clique neste ícone. Em seguida, você executa o PL / SQL e, a seguir, seleciona a guia "Saída do DBMS, você deve poder ver os resultados lá.
fonte
Todos eles estão concentrados no loop for, mas se usarmos um loop normal, teremos que usar a variável de registro do cursor. A seguir está o código modificado
fonte