以下のように、DB2 PL/SQL 関数でカーソルを宣言しています。
create function query1(tbname VARCHAR(32), msisdn VARCHAR(32))
returns VARCHAR(40)
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
begin atomic
DECLARE vsql varchar(2000);
DECLARE dt_UTC date;
DECLARE C1 CURSOR FOR select productid from Subscription_000 where msisdn= 123456;
SET vsql = 'select productid from Subscription_000 where msisdn= 123456';
OPEN C1;
return '123';
end
@
上記の内容を k2.sql に保存しました。次のコマンドを使用してこの関数をコンパイルしようとすると、db2 -td@ -f k2.sql というエラーが表示されます。
DB21034E コマンドは有効なコマンド行プロセッサー・コマンドではなかったため、SQL ステートメントとして処理されました。SQL 処理中に返されました: SQL0104N 「DECLARE C1 CURSOR」の後に予期しないトークン「FOR」が見つかりました。予想されるトークンには次のものが含まれる場合があります: ""。行番号=10。SQLSTATE=42601
ここで何が問題なのかについての提案はありますか...?