储存过程
CREATE OR REPLACE PROCEDURE 过程名
(
... --参数定义部分
)
IS
... --局部变量定义部分
BEGIN
... --可执行部分
EXCEPTION
... --异常处理部分
END 过程名;
在END后可以加上储存过程名,也可以不加。如果要在END后加过程名,则必须要和前面的存储过程名相同。
在定义一个储存过程参数时,不能指定CHAR类型和VARCHAR2类型形参的长度,也不能指定NUMBER形参的精度和标度,这些约束有实参来传递。
函数:
储存过程和存储函数有不同之处,储存过程只能作为一个PLSQL语句调用,而函数作为表达式的一部分调用。并且他们的定义部分,可执行部分和异常处理部分是不同的
CREATE OR REPLACE FUNCTION 函数名
(
... --参数
)
RETURN return_datatype --函数返回值类型
IS
... --局部变量定义
v_RreturnValue return_datatype;
BEGIN
... --函数处理部分
RETURN v_RreturnValue;
EXCEPTION
...
END 函数名;
函数的返回值
在函数内,是通过RETURN语句来返回值的。
在函数体中可以有多条RETURN语句,但是只能有一条被执行,在函数结束的时候,如果没有执行RETURN语句会产生错误。
函数与储存过程的相同的
都可以通过OUT模式的参数返回一个或多个值。
代码都有定义部分,可执行部分和异常处理部分
都可以使用缺省值
都可以用位置表示法和命名表示法。
在使用储存函数与储存过程时,一般情况下,如果只有一个返回值,则使用函数;如果有多个返回值则使用储存过程,尽管函数的形参可以是OUT模式,当时一般不这样使用。
删除过程和函数
DORP PROCEDURE 储存过程名;
DROP FUNCTION 函数名;
库存子程序和局部子程序
库存子程序,是由CREATE命令创建,并可以在其他PLSQL块中调用.他们在创建子程序时要进行编译,并将编译后的代码存储在数据库中,当子程序被调用时,编译后的代码从数据看中读出并执行。
一个子程序也可以在块的定义部分创建,这样的子程序被叫作局部子程序
局部子程序只能在定义部分的最后被创建