----1. 该函数接受3个可选参数,返回3个数字的和 CREATE OR REPLACE FUNCTION add_three_numbers ( a NUMBER:=0, b NUMBER:=0, c NUMBER:=0 ) RETURN NUMBER IS BEGIN RETURN a+b+c; END;
存储过程: 基本语法: create procedure <过程名>(<参数列表,无参时忽略>) as|is 变量声明、初始化 begin 业务处理、逻辑代码 exception 异常捕获、容错处理 end <过程名>; 参数:<参数名> in|out|in out <参数类型,无长度说明> ,如:v_name varchar2 in:入参 out:出参 in out:出入参 注:as|is表示as或is 调用语法: 1)、exec <过程名>; 2)、execute <过程名>; 3)、在PL/SQL语句块中直接调用。 例: create or replace procedure up_wap(v_param1 in out varchar2,v_param2 in out varchar2) is v_temp varchar2(20); begin dbms_output.put_line('交换前参数1:'||v_param1||' 参数2:'||v_param2); v_temp:=v_param1; v_param1:=v_param2; v_param2:=v_temp; dbms_output.put_line('交换后参数1:'||v_param1||' 参数2:'||v_param2); exception when others then dbms_output.put_line('There is a error when the procedure up_wap executing!'); end up_wap; / -- 调用存储过程 declare v_param1 varchar2(20):='param1'; v_param2 varchar2(20):='param2'; begin up_wap(v_param1 => v_param1,v_param2 => v_param2); end; /
自定义函数(function) 基本语法: create function <函数名>(<参数列表,无参时忽略>) return <返回值类型,无长度说明> as|is 变量声明、初始化 begin 业务处理、逻辑代码 return <返回的值>; exception 异常捕获、容错处理 end <函数名>; 参数:in 入参 注:只有入参的类型。 在存储过程和自定义函数中的参数的传递(入参和出参)不能使用%type或%rowtype匹配,不能使用空值null,但是存储过程可以返回空值。 例: create function uf_select_name_by_id_test(v_id in number) return varchar2 is v_name t_test.t_name%type; begin select t_name into v_name from t_test where t_id=v_id; return v_name; exception when others then dbms_output.put_line('error'); end uf_select_name_by_id_test; / select uf_select_name_by_id_test(1) 姓名 from dual;-- select调用 declare --pl/sql语句块调用 v_name varchar2(20); begin v_name:=uf_select_name_by_id_test(1); dbms_output.put_line('name = '||v_name); end; /