Oracle--plsql函数
- 一个存储函数是一个命名的PL/SQL 块,它可以接受参数并且可以被调用。一般来说,函数用于计算一个值。
- 函数和过程有相似的结构,但函数必须返回一个值到主叫环境。反之,过程可以没有返回值,也可以由多个值返回到它的主叫环境。
- 象过程一样,函数有一个头,一个声明部分,一个执行部分和一个异常处理部分。在函数的头中必须有一个RETURN 子句,并且在执行部分至少有一个 RETURN 语句。
- 函数可以作为一个方案对象被存储在数据库中用于反复执行。
- 函数可以作为一个SQL 表达式或 PL/SQL表达式的一部分被调用。
函数语法:
PL/SQL
块必须至少有一个RETURN语句
语法说明
参数 说明
function_name 函数的名字
parameter 一个 PL/SQL变量的名字,其值被传递到函数中
mode 参数的类型;可以是 IN、out、inout 参数 ,一般使用IN参数
datatype 参数的数据类型
RETURNdatatype RETURN 值的数据类型
PL/SQLblock 定义要由函数执行的动作的程序体
使用步骤:
1.在一个编辑器中输入CREATE FUNCTION语句的文本并且将它保存为一个SQL 脚本文件
2.运行存储源代码的脚本文件并且编译函数
3.用SHOW ERRORS查看编译错误
在sql*plus创建函数并调用
VARIABLE g_sal NUMBER
EXEC :g_sal := get_sal(7369)
Print g_sal
调用用户定义函数的位置
•SELECT语句的Select
列表中
•WHERE和HAVING子句的条件中
•START WITH、ORDER BY和GROUPBY子句中
•INSERT语句的VALUES子句中
•UPDATE语句的SET子句中
SELECT empno, tax(sal)
FROM emp
WHERE tax(sal)>(SELECTMAX(tax(sal))
FROM emp
WHERE deptno = 30)
ORDER BY tax(sal) DESC;
从SQL中调用函数的限制
为了从SQL 表达式中调用函数,用户定义函数必须:
•只接受IN参数
•只接受有效的SQL 数据类型,而不接受PL/SQL特殊的类型
作为参数
•返回数据类型为有效的SQL数据类型,而非PL/SQL 特殊的
类型
•在一个表上的UPDATE或DELETE语句中调用的函数不能查询及更新同一个表
•从SQL
语句中调用的函数不能包含结束事务的语句
函数删除:
posted on 2012-03-29 23:12 android开发实例 阅读(2021) 评论(0) 编辑 收藏 举报