2017-07-27 24 views
-5

我必须声明这样的变量的函数:“Into”语句是否可以将多个结果写入列类型变量?

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

是的,这是可能的,什么rdms? –

+0

@IlyaBursov rdms? – Zibbobz

+1

https://en.wikipedia.org/wiki/Relational_database_management_system –

回答

1

select into会抛出TOO_MANY_ROWS错误。如果要存储选择查询的多个结果,请使用游标。

如:open cur_values for select value_key from (table) where (Conditions);

将携带所有符合选择查询的记录。

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; 

也参见本文:Bulk Processing with BULK COLLECT and FORALL

相关问题