Plsql 在PL/SQL(DB2)中发现意外的标记“异常”

Plsql 在PL/SQL(DB2)中发现意外的标记“异常”,plsql,db2,Plsql,Db2,我正在db2中编写一个存储函数,如下所示 CREATE OR replace FUNCTION moc_enddate( IN v_date VARCHAR(6), IN v_message VARCHAR(20)) returns DATE BEGIN DECLARE v_temp DATE; DECLARE v_end_date DATE; DECLARE v_temp_stri

我正在db2中编写一个存储函数,如下所示

CREATE OR replace FUNCTION moc_enddate( IN v_date    VARCHAR(6),
                                        IN v_message VARCHAR(20)) returns DATE
  BEGIN
    DECLARE v_temp DATE;
    DECLARE v_end_date DATE;
    DECLARE v_temp_string VARCHAR(8) DEFAULT '01';

      SET v_temp_string = v_temp_string
          || v_date;
      SET v_temp = to_date(v_temp_string,'DDMMYYYY');
      SET v_end_date = (v_temp + 19 days);
      RETURN v_end_date;
  EXCEPTION
        WHEN no_data_found THEN
          SET v_message = 'SqlDataException';
        WHEN OTHERS THEN
          SET v_message = 'OTHER';
        END;
但我得到了以下例外

ERROR [42601] [IBM][DB2/AIX64] SQL0104N  An unexpected token "EXCEPTION" was found following "RN V_END_MOC_DATE; ".  Expected tokens may include.
"<psm_case>".

您是否启用了对PL/SQL的支持,这是DB2中Oracle的过程语言?我认为它在默认情况下没有启用,只在9.7和更高版本中可用。我认为它是启用的,因为如果我将删除异常块,那么它将正常工作。我想处理异常,但在本例中它不起作用。您将PL/SQL与异常声明和DB2SQLPL混合在一起,并将其用于代码的其余部分。选择一个并坚持下去。在DB2SQLPL中,您使用DECLARE HANDLER作为异常处理程序,还试图修改标量用户定义函数UDF的输入参数值,这是行不通的。要做到这一点,您需要创建一个过程,而不是函数,并将v_message设置为INOUT参数。作为一个新手,我不太清楚。。。