为什么我们在PL SQL中一次不能获取多个值?

时间:2015-06-29 08:02:29

标签: oracle plsql oracle11g

为什么我们在PL SQL中一次不能获取多个值?为什么需要光标?

2 个答案:

答案 0 :(得分:0)

  

为什么我们在PL SQL中一次不能获取多个值?

是的,你可以。

SQL> set serveroutput on
SQL> DECLARE
  2  v_empno NUMBER;
  3  v_sal NUMBER;
  4  BEGIN
  5  SELECT empno, sal into v_empno, v_sal FROM emp WHERE ename='SCOTT';
  6  dbms_output.put_line('1st value Empno is = '||v_empno||' , 2nd value sal is = '||v_Sal);
  7  END;
  8  /
1st value Empno is = 7788 , 2nd value sal is = 3000

PL/SQL procedure successfully completed.

SQL>
  

为什么需要游标?

除非你缩小到具体细节,否则这个问题太广泛了。此外,您似乎在之间感到困惑。在上面的示例中,在PL / SQL块中,它使用 INTO 子句返回了两个值,但是,它是一行。

答案 1 :(得分:0)

我猜你要问的是如何一次获取多行(但你可以更详细地询问问题)。这可以通过批量收集到集合中来实现。这是一个例子:

PROCEDURE process_all_rows
IS
   TYPE employees_aat 
   IS TABLE OF employees%ROWTYPE
      INDEX BY PLS_INTEGER;
   l_employees employees_aat;
BEGIN
   SELECT *
   BULK COLLECT INTO l_employees
      FROM employees;

   FOR indx IN 1 .. l_employees.COUNT 
   LOOP
       analyze_compensation 
      (l_employees(indx));
   END LOOP;
END process_all_rows;

从这篇文章http://www.oracle.com/technetwork/issue-archive/2008/08-mar/o28plsql-095155.html