gpt4 book ai didi

plsql - DBMS_OUTPUT.PUT_LINE 不打印

转载 作者:行者123 更新时间:2023-12-03 05:11:53 24 4
gpt4 key购买 nike

执行以下代码时,它只是表示该过程已完成,并且不会打印我想要的信息(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

多次!

最佳答案

“它只是说程序已完成”语句中的“it”是什么?

默认情况下,大多数工具不会为 dbms_output 配置写入缓冲区,并且在代码执行后不会尝试从该缓冲区读取数据。另一方面,大多数工具都有能力这样做。在 SQL*Plus 中,您需要使用命令 set serveroutput on [size N|unlimited]。所以你会做类似的事情

SQL> set serveroutput on size 30000;
SQL> exec print_actor_quotes( <<some value>> );

在 SQL Developer 中,您可以转到 View | DBMS 输出 以启用 DBMS 输出窗口,然后按绿色加号图标以启用特定 session 的 DBMS 输出。

此外,假设您不想为每一行打印文字“a.firstNamea.lastName”,您可能需要

FOR row IN quote_recs
LOOP
DBMS_OUTPUT.PUT_LINE( row.firstName || ' ' || row.lastName );
END LOOP;

关于plsql - DBMS_OUTPUT.PUT_LINE 不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com