Oracle 中的dbms_output.put_line

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 中的dbms_output.put_line相关的知识,希望对你有一定的参考价值。

declare
m number(6);
begin
dbms_output.put_line('请输入一个数字');
m:=&x;
dbms_output.put_line(m);
end;
中的dbms_output.put_line('请输入一个数字');
怎么才能让他在m:=&x;执行输出
回答的能不能运行下,不会是set serveroutput on 的基础知识,

我汗~
oracle中,不是用这个命令,这个是PL/sql的好吧~
弹出窗口你试试这个~
fnd_message.debug('请输入一个数字');
PS:上述你说的命令,一般是在存储过程之中使用,用来输出错误信息
而你说的是提示信息,需要后续的操作,这是要弹出警示窗口,一般在oracle开发的form中常使用,用的是我给你的那个语句。

试试吧~
参考技术A 楼主是想实现类似网页弹窗提示“请输入一个数字作为变量m的值”的功能。

declare
m number(6);
begin
m:=&请输入一个数字作为变量m的值;
dbms_output.put_line(m);
end;

以上已在本地测试通过。
参考技术B set serverout on
另外,你最好输出字符串,dbms_output.put_line(to_char(m));

关于Oracle if elsif else

  昨天被一同事问一问题,问题就是Oracle存储过程中的IF逻辑块

  告诉他大概是这样:

create or replace procedure testIfElsif (numb number) IS

  begin
    if numb = 1 then

      DBMS_OUTPUT.put_line(1);
    else if numb = 2 then

      DBMS_OUTPUT.put_line(2);
    else

      DBMS_OUTPUT.put_line(3);
    end if;

  end;

结果死活编译不过去,就又叫我帮他看,

编译报错:

PROCEDURE WAZTJD.TESTIFELSIF 编译错误

错误:PLS-00103: 出现符号 "TESTIFELSIF"在需要下列之一时:
if
行:11
文本:END testifelsif;

修改过程:

一、将else if 去掉就能够编译通过且可以运行调用,说明是else if的问题

二、将else if 改为elseif 结果字体颜色不变色,说明不是关键字,编译不通过

三、将代码最后改为如下

create or replace procedure testIfElsif (numb number) IS

  begin
    if numb = 1 then

      DBMS_OUTPUT.put_line(1);
    else if numb = 2 then

      DBMS_OUTPUT.put_line(2);
    else

      DBMS_OUTPUT.put_line(3);
    end if;

  end if;
end;

  编译通过;

四、最后感觉还是有问题就在网上搜,终于真相大白是elsif,不是else if 也不是 elseif,更不是第三步的解决方法

最终代码:

CREATE OR REPLACE PROCEDURE testifelsif(numb in number) AS
BEGIN
    if numb = ‘1‘ then 
      DBMS_OUTPUT.put_line(1);
    elsif numb = 2 then
      DBMS_OUTPUT.put_line(2);
    else
      DBMS_OUTPUT.put_line(3);
    end if;
END testifelsif;

这是个坑,浪费时间、精力,希望在坑里的同学能够赶紧爬出来!

另:

在写博过程中,有一段测试代码是在博客中写的,粘到pl/sql中没能编译通过,

最终原因是因为博客中的空格默认为圆角空格导致的编译不通过,在pl/sql中将空格删除全部重新打出即可编译通过。




以上是关于Oracle 中的dbms_output.put_line的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL 的 dbms_output.put_line() 与 dbms_output.put()

在 oracle 中打印进度

数据库_存储过程简介(oracle版)

oracle 10.2.0 如何在plsql 里设置 dbms_output.put_line 打印长度

oracle游标使用遍历3种方法

dbms_output.put_line 在存储过程的 Cursor For 循环内不起作用