目录
第89期培训-第五部分—Oracle11g-Oracle SQL对象管理—第16讲—函数
一、函数的概念
1、函数的概念
函数是一段预定义的逻辑代码块,可以接收参数并返回一个值。
在 Oracle SQL 中,函数可以在 SELECT 语句中使用,也可以在 PL/SQL 块中调用。
其中:
2、函数的语法
CREATE [OR REPLACE] FUNCTION function_name [(parameter1 [type], parameter2 [type], ...)] RETURN return_type IS [local_variable1 [type] := value1;] [local_variable2 [type] := value2;] BEGIN -- 函数体逻辑 RETURN return_value; EXCEPTION -- 异常处理 END;
其中:
function_name 为函数名。 parameter1, parameter2, ... 为函数的参数列表。 return_type 为返回值的数据类型。 local_variable1, local_variable2, ... 是函数体内的局部变量。 return_value 为函数的返回值。
3、案例
CREATE FUNCTION get_employee_salary(employee_id IN NUMBER) RETURN NUMBER IS emp_salary NUMBER; BEGIN SELECT salary INTO emp_salary FROM employees WHERE employee_id = employee_id; RETURN emp_salary; END;
在上述案例中,get_employee_salary 函数接收一个员工 ID 作为参数,并返回该员工的薪水。
4、注意事项
--函数名应该是唯一的。 --参数和返回值的数据类型需要明确定义,并且需要保持一致。 --函数体中可以包含 SQL 查询、逻辑判断、循环等操作。 --如果函数涉及数据库操作,应该注意异常处理和事务管理。 --函数如果与表或列同名,可能会引起命名冲突问题,应该避免这种情况。 --函数体中的语句应该尽量简洁并且高效,避免过度复杂和低效的逻辑。 --如果函数需要访问敏感的数据或者执行敏感的操作,应该授权给合适的用户或者角色,避免安全问题。
5、优点:
--提高代码的可复用性,避免重复编写相同的逻辑。 --可以在 SELECT 语句中直接使用函数,使查询更加灵活和简洁。 --函数可以增强 SQL 的表达能力,比如可以使用函数计算特定的值、格式化日期等。 --函数可以简化 SQL 语句的编写,并且提高代码的重复利用率。 --函数可以使编程更加抽象化,减少了编程的复杂度和错误率,提高了代码的可读性和维护性。
6、缺点
--函数调用可能引入一定的性能开销。 --函数的嵌套调用可能导致代码可读性降低。
二、函数的应用举例
以下是几个 Oracle 中函数的应用举例:
1. TO_DATE 函数:将字符类型的日期转换为日期类型
SELECT TO_DATE('2021-12-16', 'YYYY-MM-DD') FROM dual; -- 输出:16-DEC-21
2. SUBSTR 函数:截取字符串的一部分
SELECT SUBSTR('Hello world', 1, 5) FROM dual; -- 输出:Hello
3. ROUND 函数:四舍五入取整数
SELECT ROUND(3.1415926, 2) FROM dual; -- 输出:3.14
4. TRIM 函数:去掉字符串前后的空格
SELECT TRIM(' hello ') FROM dual; -- 输出:hello
5. NVL 函数:将 null 值替换为一个指定的值
SELECT NVL(salary, 0) FROM employees; -- 输出:如果 salary 为 null,则输出 0
以上只是 Oracle 中函数的一些常见应用举例,实际上 Oracle 提供的函数非常丰富,可以满足各种不同的需求,比如日期函数、数学函数、字符串函数等。
根据实际的业务需求,可以灵活地使用这些函数来简化 SQL 编写,并且提高查询效率。