我正在把Oracle的plsql函数转换成DB2的plsql函数,下面我提到了Oracle和DB2查询的结构。
CREATE FUNCTION FUNCTION_NAME (IN PARAMETER1 DATATYPE)
Return varchar(4000) IS
N_COLUMN1 varchar(1);
N_COLUMN2 INT;
N_COLUMN3 VARCHAR(2000);
BEGIN
SELECT A.COLUMN1,A.COLUMN2 INTO N_COLUMN1,N_COLUMN2 FROM TABLE A WHERE A.COLUMN1=PARAMETER1;
IF N_COLUMN1 = 'A' then N_COLUMN3:= 'NEW_A';
ELSEIF N_COLUMN1 = 'B' then N_COLUMN3:= 'NEW_B';
END IF;
exception when others then N_COLUMN3:= 'OTHERS'
RETURN N_COLUMN3;
END;
/
DB2查询:
CREATE FUNCTION FUNCTION_NAME (IN PARAMETER1 DATATYPE)
Returns varchar(4000)
BEGIN
declare N_COLUMN1 varchar(1);
declare N_COLUMN2 INT;
declare N_COLUMN3 VARCHAR(2000);
SELECT A.COLUMN1,A.COLUMN2 INTO N_COLUMN1,N_COLUMN2 FROM TABLE A WHERE A.COLUMN1=PARAMETER1;
IF N_COLUMN1 = 'A' then set N_COLUMN3= 'NEW_A';
ELSEIF N_COLUMN1 = 'B' then set N_COLUMN3= 'NEW_B';
END IF;
exception when others then set N_COLUMN3= 'OTHERS'
RETURN N_COLUMN3;
END;
我在异常部分得到错误。我在互联网上搜索,我得到了DECLARE类型HANDLER FOR SQLEXCEPTION他们提供了这个语法,并且在执行部分需要声明这个之前提到。我不确定我需要用什么词来代替类型。有人能帮助我吗?当其他人**时,**异常的等价DB2语法是什么?
1条答案
按热度按时间eeq64g8w1#
这取决于调用处理程序后要在代码中传递控件的位置。
查看处理程序声明描述。
以下是功能代码的一个可能示例。
| P级|F级|
| - ------|- ------|
| A类|其他|
| B|新_B|
fiddle