SQL简单存储过程
-- 根据员工编号查询员工姓名 带返回的参数
CREATE OR REPLACE PROCEDURE findEmp(empnoIn emp.empno%TYPE, enameOut OUT emp.ename%TYPE) IS
BEGIN
SELECT ename INTO enameOut FROM emp WHERE empno = empnoIn; -- no_data_found
EXCEPTION
WHEN no_data_found THEN //出现这种异常返回null
enameOut := NULL;
-- others 表示所有类型异常
END;
//定义数组
类型名称 是数组类型 数组中的元素类型
CREATE OR REPLACE TYPE myArray IS TABLE OF NUMBER(4);
CREATE OR REPLACE PROCEDURE deleteEmps(empnos myArray) IS
BEGIN
//for循环
FOR i IN empnos.FIRST .. empnos.LAST LOOP
DELETE FROM emp WHERE empno = empnos(i);
END LOOP;
COMMIT;
EXCEPTION //出现异常
WHEN OTHERS THEN ROLLBACK;
END;
//集合操作
list.count 返回集合大小
list.delete 删除集合所有元素
list.delete(3) 删除下标为3的元素
ist.delete(0, 3) 删除下标从0到3的元素
list.first 取得最小的下标
i := list.next(i) 取得下一个下标