Windows用のdb2 9.7.6フルエディションを使用しています。SQL選択式で使用できる関数を開発する必要があります。関数には、SQL データの変更と実行時例外の処理が含まれている必要があります。2 つのバリアントがありますが、これまでのバリアントですべての要件を実装するという問題があります。最初のバリアントは、SQL テーブル関数の実装です。
CREATE FUNCTION func1 (val CHAR(20))
RETURNS table(result varchar(1000))
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN atomic
insert into a values(val);
return (select result from a);
END
動作しますが、SQL プロシージャで例外処理を実装できません。ブロック「declare exit handler」を使用しようとすると、構文エラーが発生しました。2 番目のバリアントは、pl/sql 関数の実装です。
CREATE OR REPLACE FUNCTION bb
RETURN varchar2
MODIFIES SQL DATA
AS
BEGIN
insert into st values ('a');
return 0;
END bb;
しかし、この関数を実行しようとすると、「SQLCODE=-740、SQLSTATE=51034 が MODIFIES SQL DATA オプションで定義されています。これは、ルーチンが呼び出されるコンテキストでは無効です」というエラーが発生しました。お願い助けて。よろしく、ターキン・アンドリュー。