首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DBMS_OUTPUT.PUT_LINE不打印

DBMS_OUTPUT.PUT_LINE不打印
EN

Stack Overflow用户
提问于 2012-05-03 23:24:57
回答 5查看 497.3K关注 0票数 113

当执行下面的代码时,它只是说过程已经完成,并没有输出我想要的信息(firstName,lastName),然后在下面的表中打印select查询的其他值。

代码语言:javascript
复制
 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;
/ 

当将服务器输出设置为打开时,我得到

代码语言:javascript
复制
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName
a.firstNamea.lastName

很多次了!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-03 23:30:51

“它只是说程序已经完成”这句话里的“它”是什么?

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

代码语言:javascript
复制
SQL> set serveroutput on size 30000;
SQL> exec print_actor_quotes( <<some value>> );

在SQL Developer中,您可以转到View | DBMS Output以启用数据库管理系统输出窗口,然后按下绿色加号图标以启用特定会话的数据库管理系统输出。

此外,假设您不想为每一行打印文字"a.firstNamea.lastName“,您可能希望

代码语言:javascript
复制
FOR row IN quote_recs
LOOP
  DBMS_OUTPUT.PUT_LINE( row.firstName || ' ' || row.lastName );
END LOOP;
票数 217
EN

Stack Overflow用户

发布于 2018-09-03 19:40:03

在第一行设置查询,如下所示

代码语言:javascript
复制
SET SERVEROUTPUT ON 
票数 26
EN

Stack Overflow用户

发布于 2020-12-31 18:12:43

对于SQL Developer

您必须手动执行它

代码语言:javascript
复制
SET SERVEROUTPUT ON 

在此之后,如果您使用DBMS_OUTPUT.PUT_LINE('info');或直接执行任何过程。

这将打印此行

请不要试图添加这个

代码语言:javascript
复制
 SET SERVEROUTPUT ON

在函数和过程的定义中,它不会编译,也不会工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10434474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档