(1)过程
CREATE PROCEDURE update_sal( name VARCHAR2, newsal NUMBER )
IS
BEGIN
UPDATE emp SET sal = newsal;
WHERE lower( ename ) = lower( name );
END;
(2)函数
函数用于返回特定的数据。当建立函数时,在函数头部必须包含RETURN子句,而在函数体内必须要包含RETURN语句返回数据。
CREATE FUNCTION annual_income(name VARCHAR2) RETURN NUMBER
IS
annual_salary NUMBER(7, 2);
BEGIN
SELECT sal*12+nvl(comm,0) INTO annual_salary
FROM emp
WHERE lower( ename ) = lower( name );
RETURN annual_salary;
END;
(3)包
包用于逻辑组合相关的过程和函数,它由包规范和包体两部分组成。
CREATE PACKAGE emp_pkg
IS
PROCEDURE update_sal( name VARCHAR2, newsal NUMBER );
FUNCTION annual_income(name VARCHAR2) RETURN NUMBER ;
END;
//body
CREATE PACKAGE BODY emp_pkg
IS
FUNCTION annual_income(name VARCHAR2) RETURN NUMBER
IS
annual_salary NUMBER(7, 2);
BEGIN
SELECT sal*12+nvl(comm,0) INTO annual_salary
FROM emp
WHERE lower( ename ) = lower( name );
RETURN annual_salary;
END;
PROCEDURE update_sal( name VARCHAR2, newsal NUMBER )
IS
BEGIN
UPDATE emp SET sal = newsal;
WHERE lower( ename ) = lower( name );
END;
END;