首页 > 数据库 > Oracle > 2011-11-28 取单行数据
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错误。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/680385/viewspace-2669495/ ,如需转载,请注明出处,否则将追究法律责任。