输出
📄字数 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 |
+-------+