2011-11-28 取单行数据

来源:这里教程网 时间:2026-03-03 14:43:45 作者:

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错误。

相关推荐