Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


输出

📄字数 1.5K
👁️阅读量 加载中...

在 PL/SQL 中,输出指的是将程序执行结果返回给用户或传递给其他系统的过程。PL/SQL 提供了多种输出方式,适用于不同的场景和需求,包括标准输出(DBMS_OUTPUT),存储函数的 RETURN 返回,SEND_MSG 系统函数输出等。

DBMS_OUTPUT

DBMS_OUTPUT系统包是一个调试和信息输出工具包,仅包含一个包体函数 PUT_LINE,用于在 PL/SQL 代码执行过程中向控制台输出文本信息,方便进行调试、观察变量值或程序执行流程。它是 PL/SQL 开发中常用的输出机制之一,特别适合在调试函数、过程、触发器等代码块时使用。

该系统包详细说明可参考DBMS_OUTPUT,本章仅介绍其使用方式。

示例

sql
SQL> declare
       str varchar2(200);
       id int := 100;
     begin
       str := '输出字符类型变量';
       dbms_output.put_line(str);
       dbms_output.put_line('直接输出字符常量');
       exec dbms_output.put_line('使用exec执行包体函数输出');
       dbms_output.put_line(id); --输出非字符类型,但可隐式转换
       dbms_output.put_line('输出字符拼接:'||str||id);
       for i in 1..5 loop
         dbms_output.put_line('循环输出循环计数器当前值:'||i);
       end loop;
     end;
     /
-- 输出结果
输出字符类型变量
直接输出字符常量
使用exec执行包体函数输出
100
输出字符拼接:输出字符类型变量100
循环输出循环计数器当前值:1
循环输出循环计数器当前值:2
循环输出循环计数器当前值:3
循环输出循环计数器当前值:4
循环输出循环计数器当前值:5

SEND_MSG

SEND_MSG 系统函数作用为向客户端发送消息,参数类型为 VARCHAR,返回类型为 BOOLEAN;该函数详细说明可参考SEND_MSG,本章仅介绍其使用方式。

示例

sql
SQL> declare
       str varchar2(200);
       id int := 100;
     begin
       str := '输出字符类型变量';
       send_msg(str);
       send_msg('直接输出字符常量');
       exec send_msg('使用exec执行输出');
       send_msg(id); --输出非字符类型,但可隐式转换
       send_msg('输出字符拼接:'||str||id);
       for i in 1..5 loop
         send_msg('循环输出循环计数器当前值:'||i);
       end loop;
     end;
     /
-- 输出结果
输出字符类型变量
直接输出字符常量
使用exec执行输出
100
输出字符拼接:输出字符类型变量100
循环输出循环计数器当前值:1
循环输出循环计数器当前值:2
循环输出循环计数器当前值:3
循环输出循环计数器当前值:4
循环输出循环计数器当前值:5

RETURN

RETURN 是控制程序流程的核心语句,用于终止执行并返回结果,存储函数中必须使用RETURN返回值,且 RETURN 可返回基本所有数据类型(需与存储函数定义的类型相同),且可使用 SELECT 语句查询出返回值。

示例

sql
  SQL> CREATE OR REPLACE FUNCTION func_return()
    RETURN INT
  AS
    ret INT;
  BEGIN
    SELECT 1 INTO ret FROM dual;
    RETURN ret;
    send_msg('return之后的语句不再执行,直接结束');
    SELECT 2 INTO ret FROM dual;
    RETURN ret;
  END;
  /
  
  SQL> SELECT func_return() FROM dual;
  +-------+
  | EXPR1 |
  +-------+
  | 1     |
  +-------+


  SQL> CREATE OR REPLACE FUNCTION func_return2()
    RETURN VARCHAR
  AS
    ret VARCHAR;
  BEGIN
    ret :='Abc';
    RETURN ret;
  END;
  /
  -- 可使用存储函数的RETURN返回值做其他操作
  SQL> SELECT upper(func_return2()) FROM dual;
  +-------+
  | EXPR1 |
  +-------+
  | ABC   |
  +-------+