【发布时间】:2015-06-29 08:02:29
【问题描述】:
为什么我们不能在 PL SQL 中一次获取多个值?为什么需要光标?
【问题讨论】:
-
我不知道你在说什么。有几种方法可以在 PL/SQL 中获取数据。当然,您可以一次获取多个值。你的问题是没有意义的。
为什么我们不能在 PL SQL 中一次获取多个值?为什么需要光标?
【问题讨论】:
我猜您要问的是如何一次获取多行(但您可以更详细地提出问题)。这可以通过将批量收集到集合中来完成。这是一个例子:
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
【讨论】:
为什么我们不能在 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>
为什么需要光标?
除非您缩小到具体细节,否则这个问题太宽泛,无法回答。此外,您似乎对 values 和 rows 感到困惑。在上面的示例中,在 PL/SQL 块中,它使用 INTO 子句返回两个值,但是,它是单行。
【讨论】: