0

私はIBM db2ストアドプロシージャを初めて使用します。私がやろうとしているのは、テーブルから列の値を取得し、これらの値に基づいて選択クエリを作成することです.

CREATE TYPE currencySymbols AS VARCHAR(20) ARRAY[100]@

CREATE PROCEDURE ins_curr_ano(IN crsymbol VARCHAR(20), IN cost1 integer, IN cost2 integer, IN teirId integer) 
BEGIN
DECLARE currencies currencySymbols;
DECLARE maxCount INTEGER DEAFULT 0;

set currencies = ARRAY[SELECT distinct(CURR_SYMBOL) as currencySymbols FROM CURRENCY_MAPPING];

set maxCount = CARDINALITY(currencies);

for i in 1..maxCount loop
     dbms_output.put_line(i);
end loop;

END@

以下は私が得ているエラーです:

DB21034E コマンドは有効なコマンド行プロセッサー・コマンドではなかったため、SQL ステートメントとして処理されました。SQL 処理中に返されました: SQL0104N "for i in 1..maxCount" の後に予期しないトークン "loop" が見つかりました。予想されるトークンには次のものが含まれる可能性があります: "(". LINE NUMBER=13. SQLSTATE=42601

4

1 に答える 1

1

コード内のそのfor ... loopステートメントには PL/SQL 構文があり、他のすべてのステートメントには DB2 SQL PL 構文があります。同じルーチンで 2 つを混在させることはできません。

于 2013-09-23T16:36:47.740 に答える