Oracle 的强大,一方面体现在对 PL/SQL 的支持,可以实现各种复杂的业务逻辑,使应用层扁平化。这里简单介绍存储过程和存储函数的用例和区别。
Oracle 存储过程和函数:
1、存储过程:封装在服务器上一段sql片段,已经编译好了的代码,客户端调存储过程,执行效率就会非常高效;
2、存储函数:封装在oracle在服务器里面的plsql片段,它是已经编译好的代码片段;
3、存储过程和存储函数本质上没有区别;
4、函数具有返回值,可以被存储过程函数,函数也可以在 SQL 里面直接调用;
5、存储过程没有返回值,只能通过 out 类型参数返回,存储过程不能被 SQL 直接调用。
代码:
CREATE OR REPLACE PROCEDURE KETTLE_USER.HELLO_WORLD
as
msg VARCHAR(100); -- 入参,默认为 in
begin
msg := KETTLE_USER.F_GET_MSG(1); -- 调用函数
dbms_output.Put_line(msg); -- 打印结果
exception
when others then -- 处理所有异常
rollback;
end;
CREATE OR REPLACE FUNCTION KETTLE_USER.F_GET_MSG(
v_id IN INT
) RETURN VARCHAR -- 返回值类型
IS
MSG_T VARCHAR2(100); -- 返回值变量
BEGIN
SELECT NAME||' '||VALUE
INTO MSG_T
FROM wzdtest
WHERE ID = v_id; -- 调用 SQL
RETURN MSG_T; -- 返回
END F_GET_MSG;