1.情景展示

  在plsql中如何使用dbms_output输出执行结果?

plsql 中如何使用dbms_output输出结果_sql

  如上图所示,运行后报错:ora-00922

plsql 中如何使用dbms_output输出结果_解决方案_02

2.原因分析

  set serveroutput on 语句的作用是:打开Oracle自带的输出方法dbms_output,在执行以后,使用dbms_output方法可以输出信息。

  但是,它是sqlplus语句,不是sql语句,所以不能在sql window中使用,该命令不是写在pl/sql中的,而是在sql/plus中执行。SQL WINDOW里面可以不加set serveroutput on就可以使用dbms_output。

3.解决方案

  也就是说,在plsql中,不能也不用调用这句话,是多余的,画蛇添足!网络上的代码真是吓人! 

  删掉这行代码

declare
v_score number := &score;
begin
if v_score >= 80 then
dbms_output.put_line('优秀');
elsif v_score >= 60 then
dbms_output.put_line('良好');
else
dbms_output.put_line('不好');
end if;
end;

  执行

plsql 中如何使用dbms_output输出结果_SQL_03

  执行结束

plsql 中如何使用dbms_output输出结果_SQL_04

  到这里,很多人都傻眼了,搞什么,结果怎么没有打印出来? 

plsql 中如何使用dbms_output输出结果_解决方案_05

  你刚在实在左侧的SQL视图中,切换到输出视图就能看到结果啦。 

  这,才是在plsql中使用的正确用法。 

注意:

declare关键字前面可以加注释,但是注释内容不能含中文!

plsql 中如何使用dbms_output输出结果_ORACLE_06

  只要注释中包含中文,必报这个错,所以要么不用注释,要么加英文注释

  存储过程也是这样查看输出结果。 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!



作者:Marydon