首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在oracle过程中将serveroutput设置为on

在oracle过程中将serveroutput设置为on
EN

Stack Overflow用户
提问于 2012-10-29 07:45:20
回答 6查看 199.4K关注 0票数 11

我已经创建了一个简单的过程。在这个过程中,我想输出一些数据。然而,无论我把set serveroutput放在哪里

上面写着

错误(26,5):PLS-00103:在需要以下内容之一时遇到符号"SERVEROUTPUT“:。(),*@%&=-+ at in is mod rem not rem => <> or != or ~= >= <= <> and or like like2 like4 like c as between || multiset member submultiset

我把它放在哪里并不重要,它一直在说。

代码语言:javascript
运行
复制
create or replace PROCEDURE discount  

is --- signature 

BEGIN --- executable part

update dvd set me_our_price = me_our_price*0.90 WHERE me_release_year = 2011;
update dvd set me_our_price = me_our_price*0.80 WHERE me_release_year = 2010;

update bluray set me_our_price = me_our_price*0.95 WHERE me_release_year = 2011;
update bluray set me_our_price = me_our_price*0.90 WHERE me_release_year = 2010;


DBMS_OUTPUT.PUT_LINE(' Blurays '); 
for i in ( 
SELECT e.mo_title, e.mo_bluray.me_list_price as me_list_price, e.mo_bluray.me_our_price    as  me_our_price FROM movie e  where e.mo_bluray is not null
 ) 
loop 

DBMS_OUTPUT.PUT_LINE(i.mo_title|| '  ' || i.me_list_price|| '  ' || i.me_list_price); 

end loop; 

DBMS_OUTPUT.PUT_LINE(' DVDs '); 
for i in ( 
set serveroutput on
SELECT e.mo_title, e.mo_dvd.me_list_price as me_list_price, e.mo_dvd.me_our_price as      me_our_price FROM movie e  where e.mo_dvd is not null
 ) 
loop 
DBMS_OUTPUT.PUT_LINE(i.mo_title|| '  ' || i.me_list_price|| '  ' || i.me_list_price); 
end loop; 


END discount; 
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-04-08 12:46:23

为了理解"SET SERVEROUTPUT ON“的用法,我将举一个例子

代码语言:javascript
运行
复制
DECLARE
a number(10)  :=10;
BEGIN
dbms_output.put_line(a) ;
dbms_output.put_line('Hello World ! ')  ;
END ;

使用output : PL/SQl过程成功完成,即没有预期的输出

背后的主要原因是,我们在dbms_output.put_line(‘参数’/值)中传递的任何东西,即参数/值,都在内部存储在SGA(共享全局区)内存区域中的缓冲区中,最大可达2000字节。

*注意:*但是需要注意的是,只有在我们使用**dbms_output包的时候才会创建这个缓冲区。我们只需要为一个会话设置一次环境变量!!

为了从缓冲区中获取它,我们需要设置会话的环境变量。对于初学者来说,我们设置服务器输出(因为它的命名方式)会让初学者感到困惑,但不幸的是,它根本不是这样的。在上使用SQL OUTPUT只是告诉PL/引擎

*嘿,请打印我将在dbms_output.put_line中传递的参数/值

然后PL/SQl运行时引擎在主控制台上打印参数。

我想我对你们大家都很清楚。祝你万事如意。要了解有关Quora Engine的体系结构的更多信息,您可以在Quora http://qr.ae/RojAn8上查看我的答案

并回答您的问题“应该在会话开始时使用SET SERVER OUTPUT”。

票数 28
EN

Stack Overflow用户

发布于 2012-10-29 12:09:09

"SET serveroutput ON“是SQL*Plus命令,不是有效的PL/SQL。

票数 22
EN

Stack Overflow用户

发布于 2015-11-27 04:43:03

首先在你的sp中添加下一个代码:

代码语言:javascript
运行
复制
BEGIN
    dbms_output.enable();
    dbms_output.put_line ('TEST LINE'); 
END;

在Oracle SQL developer中编译代码。因此,转到菜单View--> dbms output。单击Icon Green Plus并选择您的架构。现在运行您的sp。

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

https://stackoverflow.com/questions/13114220

复制
相关文章

相似问题

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