我有一个声明如下变量的函数:
FUNCTION functionName((input_value) IN INTEGER) RETURN INTEGER IS
...
value_key_in (database_name)(table_name).value_key%type;
并使用此Select语句写入此值:
select value_key
into value_key_in
from (table)
where (Conditions);
如果(条件)为Value_Key返回多个有效结果,则" value_key_in"能把它们全部拿走吗?
答案 0 :(得分:1)
select into会抛出TOO_MANY_ROWS错误。如果要存储选择查询的多个结果,请使用游标。
例如:open cur_values for
select value_key
from (table)
where (Conditions);
将包含与选择查询匹配的所有记录。
答案 1 :(得分:0)
没有
如果您希望从查询中获取更多记录,则可以使用循环结果集或BULK COLLECT子句。
使用BULK COLLECT,您可以将更多记录提取到PL / SQL集合中。
请参阅以下示例(来自this OTN article)并注意l_employees
数据类型:
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;