在参数中使用缺省值
在CREATE PROCEDURE或CREATE FUNCTION语句中,通过包括DEFAULT子句或使用参数运算符(:=)来设置形参的缺省值。
声明形参的一般格式为:
(name [ IN|OUT|IN OUT ] data_type [{DEFAULT | := } expr ])
name是分配给参数的标识符。IN|OUT|IN OUT用于指定参数模式。data_type是分配给变量的数据类型。expr是分配给参数的缺省值。如果不包括DEFAULT子句,那么调用者必须要给参数提供一个值。
每一次对函数或存储过程进行调用时,都会对缺省值进行评估。例如,把SYSDATE分配给类型为DATE的参数会使这个参数具有当前的调用时间,而不是创建存储过程或函数的时间。
下列存储过程演示了如何使用赋值运算符来设置参数hiredate中SYSDATE的缺省值:
CREATE OR REPLACE PROCEDURE hire_emp (
p_empno NUMBER,
p_ename VARCHAR2,
p_hiredate DATE := SYSDATE
) RETURN
IS
BEGIN
INSERT INTO emp(empno, ename, hiredate)
VALUES(p_empno, p_ename, p_hiredate);
DBMS_OUTPUT.PUT_LINE('Hired!');
END emp_comp;
如果在参数声明中包括了缺省值,那么当调用函数时就可以从实际参数列表中省略参数。对于上述示例存储过程(hire_emp)的调用,必须包括两个参数:员工号码(p_empno)和员工姓名(p_empno)。第三个参数(p_hiredate)则缺省为SYSDATE的值:
hire_emp 7575, Clark
当调用函数时,如果为实际参数包括一个值,那么这个值就会优先于缺省值:
hire_emp 7575, Clark, 15-FEB-2010
添加一名雇佣日期为February 15 2010的新员工时,可以忽略SYSDATE当前值。
您也可以用关键字DEFAULT代替赋值运算符来编写相同的函数:
CREATE OR REPLACE PROCEDURE hire_emp (
p_empno NUMBER,
p_ename VARCHAR2,
p_hiredate DATE DEFAULT SYSDATE
) RETURN
IS
BEGIN
INSERT INTO emp(empno, ename, hiredate)
VALUES(p_empno, p_ename, p_hiredate);
DBMS_OUTPUT.PUT_LINE('Hired!');
END emp_comp;
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论