http://www.itpub.net/thread-1499223-20-1.html 194楼 plch_employees表有一个单列主键employee_id。我需要写一个函数,声明如下:
FUNCTION plch_one_employee ( employee_id_in IN PLS_INTEGER) RETURN plch_employees%ROWTYPE
它有如下行为: 1. 如果传入函数的员工ID是NULL, 抛出VALUE_ERROR异常; 2. 如果找不到这个员工,抛出NO_DATA_FOUND异常。 哪些选项符合需求? (A)
IS l_return plch_employees%ROWTYPE; BEGIN SELECT * INTO l_return FROM plch_employees WHERE employee_id = employee_id_in; RETURN l_return; END plch_one_employee;
(B)
IS CURSOR one_emp_cur IS SELECT * FROM plch_employees WHERE employee_id = employee_id_in; l_return one_emp_cur%ROWTYPE; BEGIN OPEN one_emp_cur; FETCH one_emp_cur INTO l_return; CLOSE one_emp_cur; RETURN l_return; END plch_one_employee;
(C)
IS l_return plch_employees%ROWTYPE; BEGIN IF employee_id_in IS NULL THEN RAISE VALUE_ERROR; END IF; SELECT * INTO l_return FROM plch_employees WHERE employee_id = employee_id_in; RETURN l_return; END plch_one_employee;
(D)
IS CURSOR one_emp_cur IS SELECT * FROM plch_employees WHERE employee_id = employee_id_in; l_return one_emp_cur%ROWTYPE; BEGIN IF employee_id_in IS NULL THEN RAISE VALUE_ERROR; END IF; OPEN one_emp_cur; FETCH one_emp_cur INTO l_return; IF one_emp_cur%NOTFOUND THEN CLOSE one_emp_cur; RAISE NO_DATA_FOUND; ELSE CLOSE one_emp_cur; RETURN l_return; END IF; END plch_one_employee;
答案说明在197楼2011-11-28答案CD, 楼上都答对了。注意用FETCH游标的方法,即使没有数据也不会报NO_DATA_FOUND错误。
