0

raise_application_error以下のようなdb2関数内で使用しようとしています。

その関数を作成しようとすると、db2は次のように伝えます

   An unexpected token "raise_application_error" was found following 
   "id is null then ".  Expected tokens may include:  "RETURN".  LINE

関数で使用することは許可されていますか、それともストアド プロシージャのみを対象としていますか?

関数の有効な代替は何ですか?

     create or replace function get_stuff(id integer)
     returns varchar(10)
     language sql reads sql data
     begin    
             declare toreturn   varchar(10);

             if id Is null then
                   raise_application_error(-20000,'Id Missing)
             end if;
             --set (toreturn)=select ...///
             return toreturn;
     end@
4

2 に答える 2

1

IBM SQL PL を作成している場合は、シグナルのテキストを定義する必要があります。

SIGNAL SQLSTATE VALUE '20000'
 SET MESSAGE_TEXT = 'Id Missing';

DB2 で PL/SQL を作成する場合は、互換性ベクトルが ORA に設定されていることを確認する必要があります: http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2。 luw.apdv.porting.doc/doc/r0052867.html

于 2013-08-09T12:30:12.063 に答える
0

発生している構文エラーは、文字列 'Id Missing' を終了するアポストロフィが欠落している結果です。

ただし、状態を上げる適切な方法については、AngocA の回答を参照してください。彼の構文は、DB2 プラットフォーム間で移植可能です。

于 2013-08-10T00:36:23.217 に答える