2017-07-27 6 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

に選択すると、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データ型に注意してください。Bulk Processing with BULK COLLECT and FORALL

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; 

は、こちらの記事も参照してください。

関連する問題