Я пытаюсь написать функцию db2, ниже приведен код
CREATE OR REPLACE FUNCTION SPLIT_STRING (INPUT VARCHAR(8000), DELIMITER
CHAR(1) DEFAULT ',')
RETURNS TABLE (str VARCHAR(8000))
SPECIFIC SPLIT_STRING
LANGUAGE SQL
DETERMINISTIC
NO EXTERNAL ACTION
BEGIN ATOMIC
DECLARE @MSG VARCHAR(30)
SET @MSG ='INVALID INPUT'
IF (INPUT IS NULL) THEN RETURN @MSG
ELSE
RETURN
WITH R1 (str, REMAINDER) AS
(SELECT SUBSTR(INPUT, 1, LOCATE(DELIMITER, INPUT) -1) AS str,
SUBSTR(INPUT, LOCATE(DELIMITER, INPUT) +1 , LENGTH(INPUT))
REMAINDER FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT SUBSTR(REMAINDER, 1, LOCATE(DELIMITER, REMAINDER)-1) AS str,
SUBSTR(REMAINDER, LOCATE(DELIMITER, REMAINDER)+1, LENGTH(REMAINDER))
REMAINDER FROM R1
WHERE LOCATE(DELIMITER, REMAINDER) > 0
UNION ALL
SELECT SUBSTR(REMAINDER, LOCATE(DELIMITER, REMAINDER)+1,
LENGTH(REMAINDER)) AS str,'' AS REMAINDER FROM R1 WHERE REMAINDER <> ''
AND LOCATE(DELIMITER, REMAINDER) = 0
)SELECT str FROM R1
END IF
END;
Если я удаляю условие IF, которое используется для проверки входных параметров, функция создается нормально, иначе получается ошибка ниже.
DB21034E The command was processed as an SQL statement because it was
not a valid Command Line Processor command. During SQL processing it returned:SQL0104N An unexpected token "SET" was found following "RE @MSG VARCHAR(30) ". Expected tokens may include: <SQL_variable_declarations>". LINE NUMBER=8. SQLSTATE=42601