本文介绍了DB2功能错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下DB2函数怎么了?
What's wrong with the following DB2 function?
CREATE FUNCTION MIGRATION.determineToTaxService
(DIGI_NAAR_VLG CHAR, DIGI_VAN_VLG CHAR, NAARVLG CHAR)
RETURNS CHAR
BEGIN ATOMIC
DECLARE returnValue CHAR;
SET returnValue = '0';
IF (DIGI_NAAR_VLG = '1') THEN
SET returnValue = '1';
ELSEIF (DIGI_VAN_VLG = '1') THEN
SET returnValue = '1';
ELSEIF (NAARVLG = '1') THEN
SET returnValue = '1';
END IF;
RETURN returnValue;
END;
我遇到此错误:
An unexpected token "CHAR" was found following " DECLARE returnValue". Expected tokens may include: "END-OF-STATEMENT". SQL Code: -104, SQL State: 42601
Error occured in:
CREATE FUNCTION MIGRATION.determineToTaxService
(DIGI_NAAR_VLG CHAR, DIGI_VAN_VLG CHAR,
NAARVLG CHAR)
RETURNS CHAR
BEGIN ATOMIC
DECLARE returnValue CHAR
我真的无法弄清楚出来。如果我删除了if和elsif语句,那么它也不会运行,因此问题就不会存在。
I can't really figure it out. It's also not running if I remove the if and elsif statements so the problem shouldn't be there.
推荐答案
一个窍门是用以下注释结束行:
A trick is to end the lines with a comment like:
CREATE FUNCTION MIGRATION.determineToTaxService
(DIGI_NAAR_VLG CHAR, DIGI_VAN_VLG CHAR, NAARVLG CHAR)
RETURNS CHAR
BEGIN ATOMIC
DECLARE returnValue CHAR; --
SET returnValue = '0'; --
IF (DIGI_NAAR_VLG = '1') THEN
SET returnValue = '1'; --
ELSEIF (DIGI_VAN_VLG = '1') THEN
SET returnValue = '1'; --
ELSEIF (NAARVLG = '1') THEN
SET returnValue = '1'; --
END IF; --
RETURN returnValue; --
END ;
然后您可以继续使用;作为语句终止符
Then you can continue using ; as a statement terminator
您可能想简化函数,例如:
You might want to simplify the function, something like:
CREATE FUNCTION MIGRATION.determineToTaxService
(DIGI_NAAR_VLG CHAR, DIGI_VAN_VLG CHAR, NAARVLG CHAR)
RETURNS CHAR
RETURN
CASE WHEN DIGI_NAAR_VLG = '1' THEN '1'
WHEN DIGI_VAN_VLG = '1' THEN '1'
WHEN NAARVLG = '1' THEN '1'
ELSE '0'
END
应该做
这篇关于DB2功能错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!