目录
提示:一定要分清函数和存储过程的区别
1.什么是函数
函数(Function) 是一种子程序,用于封装一段逻辑,并返回一个结果值。
2. 函数的基本语法
CREATE [OR REPLACE] FUNCTION function_name
(parameter1 IN datatype, parameter2 IN datatype, ...)
RETURN return_datatype -- 函数必须有返回值的数据类型
IS
-- 可选的局部变量声明部分
BEGIN
-- 逻辑部分,计算或处理输入参数
RETURN return_value; -- 函数必须有 RETURN 语句返回结果
EXCEPTION
-- 可选的异常处理部分
WHEN exception_name THEN
-- 异常处理逻辑
END function_name;
function_name
:函数的名称,用来调用函数时使用。parameter1, parameter2, ...
:函数的输入参数,所有参数都是IN
类型,只能读取,不能修改。RETURN return_datatype
:函数必须返回一个值,return_datatype
指定返回值的类型(如NUMBER
、VARCHAR2
)。RETURN
语句:函数体内必须有RETURN
语句,用来返回结果。- 异常处理(可选):可以处理运行过程中可能出现的错误。
3.函数的使用场景
- 数据处理:将输入参数处理并返回结果(例如数学运算、字符串操作等)。
- 数据转换:将数据格式进行转换(如日期格式、货币单位等)。
- 查询优化:可以在 SQL 语句中复用函数,避免重复逻辑
4.举例说明
示例 1:加法函数
CREATE OR REPLACE FUNCTION add_numbers(p_num1 IN NUMBER, p_num2 IN NUMBER)
RETURN NUMBER -- 函数返回一个 NUMBER 类型的结果
IS
BEGIN
RETURN p_num1 + p_num2; -- 返回 p_num1 和 p_num2 的和
END;
--调用方式
SELECT add_numbers(10, 20) FROM dual; -- 返回 30
示例 2:计算税额的函数
CREATE OR REPLACE FUNCTION calculate_tax(p_price IN NUMBER)
RETURN NUMBER
IS
v_tax NUMBER;
BEGIN
v_tax := p_price * 0.10; -- 计算税率为 10%
RETURN v_tax; -- 返回计算出的税额
END;
--调用方式
SELECT product_name, calculate_tax(price) AS tax
FROM products;
示例 3:返回员工全名的函数
CREATE OR REPLACE FUNCTION get_full_name(p_first_name IN VARCHAR2, p_last_name IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN p_first_name || ' ' || p_last_name; -- 拼接名字和姓氏,并返回全名
END;
--调用方式
SELECT get_full_name('John', 'Doe') FROM dual; -- 返回 'John Doe'
示例 4:带有异常处理的函数
CREATE OR REPLACE FUNCTION safe_divide(p_num1 IN NUMBER, p_num2 IN NUMBER)
RETURN NUMBER
IS
BEGIN
IF p_num2 = 0 THEN
RAISE_APPLICATION_ERROR(-20001, '除数不能为零'); -- 抛出异常
ELSE
RETURN p_num1 / p_num2; -- 返回除法结果
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL; -- 处理所有其他异常,并返回 NULL
END;
--调用方式
SELECT safe_divide(10, 0) FROM dual; -- 返回 NULL,并且输出 '除数不能为零' 错误
标签:返回,RETURN,plsql,--,函数,NUMBER,name
From: https://blog.csdn.net/hjdhxy/article/details/142354588