Мне было предложено создать определенную пользователем функцию в нашей среде Mainframe, которая проверяет строку поиска в более длинной строке. Единственный улов в том, что, если мы ищем пример для «AA» в «ABCAADAA», единственным действительным результатом является последний AA, потому что первый AA фактически разделен на CA и AD.UDF в DB2 11.0
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 и Google).
Первая ошибка, я получаю:
Что относится к линии я объявляю свою индексную переменную. Если я удалю точку с запятой, это говорит мне, что SET является незаконным там, потому что он ожидает точку с запятой. Я не могу придумать ничего другого, что мог бы попробовать (я много перепутал с кодом, но ошибки просто стали более странными). Я начал работать в этой области, находясь в колледже всего пару недель назад, и никто здесь не имеет реальных знаний об этом, поэтому я надеялся найти какую-то помощь здесь. Если вам что-то еще нужно, просто дайте мне знать!
Заранее спасибо.
Возможный дубликат [неожиданный знак «CREATE TRIGGER] (http://stackoverflow.com/questions/13266700/an-unexpected-token-create -trigger) – mustaccio