Can You Assign Multiple Query Result Rows To a Variable

Q

Can You Assign Multiple Query Result Rows To a Variable? - Oracle DBA FAQ - Working with Database Objects in PL/SQL

✍: FYIcenter.com

A

You can use "SELECT ... INTO variable" to assign query results to variables. But what happens if the SELECT statements return multiple rows? The answer is that you will get a run time error. The following tutorial exercise shows this error condition:

DECLARE
  fname VARCHAR2(10);
  lname VARCHAR2(10);
BEGIN
  SELECT first_name, last_name INTO fname, lname 
    FROM employees WHERE employee_id = 100;
  DBMS_OUTPUT.PUT_LINE('Name = ' || fname || ' ' || lname);
  SELECT first_name, last_name INTO fname, lname 
    FROM employees WHERE employee_id > 100;
  DBMS_OUTPUT.PUT_LINE('Name = ' || fname || ' ' || lname);
END;
/
ORA-01422: exact fetch returns more than requested number 
  of rows
ORA-06512: at line 8
Name = Steven King

2007-04-27, 5228👍, 0💬