oracle在plsql中set serveroutput on 调用存储过程没输出

刚开始学习写存储过程,我在plsql中setserveroutputon后,用callprocedure,执行后显示Methodcalled,但是没有输出,怎么不是PL/... 刚开始学习写存储过程 ,我在plsql中 set serveroutput on 后,用call procedure,执行后显示Method called,但是没有输出,怎么不是PL/SQL procedure successfully completed,并加上输出呀,当我用execute 直接执行输出时,能输出,并将上一次执行的procedure该输出却未输出的结果一起输出来了,下面是我的执行结果。
SQL> call test1();

Method called

SQL> execute DBMS_OUTPUT.PUT_LINE('TEST');

abc
TEST

PL/SQL procedure successfully completed

同样的存储过程,我在sqlplus中调用,set serveroutput on 后,能输出,后面的提示 是 “调用完成”,怎么不是 “PL/SQL 过程已成功完成”,下面是执行代码命令。
SQL> call test1();
abc

调用完成。

SQL> execute test1();
abc

PL/SQL 过程已成功完成。
麻烦大哥们给我说下,顺便说下,提示“调用完成”,和提示“PL/SQL 过程已成功完成”个在什么情况下提示。
哪个大哥给我讲讲啊 为什么 调用后没有输出呀

哪位大哥 再回答下呀

二楼的大哥 我用的 是命令窗口 执行了后 显示不出来的
展开
 我来答
badkano
2015-12-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885360
团长

向TA提问 私信TA
展开全部

打开set serveroutput on还需要有输出内容才可以显示。

如,有以下存储过程:

create or replace procedure p_test
as
v_begintime varchar2(20);
v_endtime varchar2(20);
v_str varchar2(10);
begin
  v_begintime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');
  select 'badkano' into v_str from dual;
  v_endtime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');
  dbms_output.put_line('开始时间为:'||v_begintime);
  dbms_output.put_line('结束时间为:'||v_endtime);
end;

执行:

其中后边红框输入,就是set serveroutput on的输出内容。

loveyurui
2010-05-06 · TA获得超过6555个赞
知道大有可为答主
回答量:2892
采纳率:33%
帮助的人:966万
展开全部
这些细节你观察得倒蛮仔细的

个人理解还是因为call 和 execute的不同。
你从这2个单词也可以看得出来。
一个是调用 一个是执行。

我认为:call test1() 是调用这个储存过程,只运行。
而 execute是执行这个储存过程 包括编译,运行。

个人愚见
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdytwfh
2010-05-13 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:149万
展开全部
PLSQL Developer?那你要打开命令行窗口才行,就是PLSQL Developer里面的COMMAND LINE;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式