PL/SQL--Procedure(过程)和Function(函数)的区别
过程和函数的区别:
过程 |
函数 |
使用关键字 procedure 声明 |
使用关键字 function 进行声明 |
都可以使用 IN/OUT/IN-OUT 格式的参数 |
|
在定义的时候,不需要进行 return( 返回值 ) |
需要指定使用 return 定返回值的类型 |
都可以由声明、执行、异常处理三个部分组成 |
|
可以作为独立的 PL/SQL 语句单独执行 |
在 PL/SQL 中必须指定变量接收返回,必须在表达式中使用 |
可以在内部包含 RETURN 子句,类似 JAVA 中的使用 |
必须包含一个有效的 RETURN 子句 |
在 COMMAND 命令窗口中,使用 EXECUTE 命令执行过程 |
借用 select 语句来执行 |
在 DDL 和 SELECT 语句中不可以调用过程 |
在 DDL 和 SELECT 语句中可以调用函数 |
都可以使用 CALL 参数来调用相应的函数或过程 : V_SQL_F := 'CALL TEST_FUNC_P(:P_1) INTO :V_RESULT'; V_SQL_P := 'CALL TEST_CALL_P(:P_1)'; EXECUTE IMMEDIATE V_SQL_F USING IN V_I_P1, OUT V_RESULT; EXECUTE IMMEDIATE V_SQL_P USING IN V_I_P1; |
|
都可以使用默认值,都可以使用位置表示法和名称表示法 |
|
当需要返回多个值的时候,推荐使用过程 |
当需要返回一个值的时候,推荐使用函数 |