【发布时间】:2017-05-29 04:08:17
【问题描述】:
已编辑
我在执行一些 PL/SQL 代码时遇到问题。
我有真正的桌子a。我只想采用range<=100 的元素。我根据该表在我的 PL/SQL 中创建了一个集合。然后我想对该集合执行SELECT 操作。但我遇到了问题。
准备好的表(例如,这不是一个真正的问题。我只是想知道如何从 PL/SQL 代码块中的集合中选择)。
CREATE TABLE a (amount NUMBER);
INSERT INTO a VALUES (50);
INSERT INTO a VALUES (100);
INSERT INTO a VALUES (200);
然后我得到了这个块:
DECLARE
TYPE aTable IS TABLE OF a%ROWTYPE;
aActual aTable;
temp NUMBER;
BEGIN
SELECT * BULK COLLECT INTO aActual
FROM a WHERE amount<=100;
SELECT SUM(amount) INTO temp FROM TABLE(aActual);
DBMS_OUTPUT.PUT_LINE(temp);
END;
但我得到了 eroor PLS-00642 和 ORA-22905。
我能做些什么?为什么它不能那样工作?
我在Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production版本(根据SELECT * FROM V$VERSION;)
【问题讨论】:
-
如果您不需要 aActual 表来做其他事情,请不要使用它。只需从 Kocury 表中选择范围的总和即可。
-
@DanBracuk 我知道,但我确实需要这张桌子。这里我只展示了少量代码来解释我遇到了什么问题。