我被要求在我们的大型机环境中构建一个用户定义的函数,用于检查更长字符串中的搜索字符串。唯一的问题是,如果我们在'ABCAADAA'中寻找'AA'的例子,唯一有效的结果是最后的AA,因为第一个AA实际上在CA和AD中分裂。DB2 11.0上的UDF
CREATE FUNCTION F#CRE#WK (WK CHAR(02), WKATTR CHAR(10))
RETURNS INTEGER
LANGUAGE SQL
READS SQL DATA
BEGIN
DECLARE INDEX INTEGER DEFAULT 1;
WHILE (INDEX < 9) DO
SET INDEX = LOCATE_IN_STRING(WKATTR, WK, INDEX);
IF (MOD(INDEX, 2) <> 0) THEN
RETURN 1;
END IF;
END WHILE;
RETURN 0;
END;
它工作正常,当我使用Data Studio实现它,但如果我把它放到主机直接(我们使用Quick32770)我收到了一堆错误,它没有任何意义可言。我找不到任何有用的资源(当然搜索整个IBM页面和谷歌)。
我得到第一个错误是:
这是指我说出我的指标变量的行。如果我删除了分号,它告诉我该SET在那里是非法的,因为它期待分号。 我想不出任何我可以尝试的东西(我搞砸了很多代码,但错误却越来越奇怪)。几个星期前我在大学时开始在这个领域工作,没有人在这里有实际的知识,所以我希望能在这里找到一些帮助。 如果您还有其他需要的东西,请告诉我!
在此先感谢。
[意外的标记“CREATE TRIGGER](可能的重复http://stackoverflow.com/questions/13266700/an-unexpected-token-create - 触发器) – mustaccio