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 回答