UDF (SQL SCALAR FUNCTION)
输入是一个整数, ID, 输出是一个NAME VARCHAR(500), 几个NAME 可以共同拥有同一个ID. 输出的就是把几个NAME 用逗号分开, 放到同一个VARCHAR里面. 查了好久怎么写SQL FUNCTION, 从不同的网站拼拼凑凑, 可是还是没有头绪, 报的错又看不懂... 想请大虾们帮帮忙改一下.~
比如, 输入班级ID, 输出是这个班里所有的学生名字, 用一个VARCHAR 用逗号隔开.
想问:
CREATE FUNCTION TEST (PID INTEGER) RETURNS VARCHAR(100)
LANGUAGE SQL
SPECIFIC TEST
DETERMINISTIC
CONTAINS SQL
BEGIN ATOMIC
DECLARE WORDS VARCHAR(500);
DECLARE CURRENT_WORD varchar(100);
FOR_LOOP: FOR EACH ROW AS C CURSOR FOR SELECT WORD FROM QA.CLASS WHERE PHRASE_ID=PID
IF... THEN
SET CURRENT_WORD = EACH_ROW.WORD;
WORDS = WORDS || CURRENT_WORD || ',';
ELSE
LEAVE FOR_LOOP;
END;
RETURN WORDS;
END;
那个FOR LOOP好象不可以那么写是吗? 我还试了:
FOR CUR1 AS SELECT WORD FROM QA.CLASS WHERE PHRASE_ID=PID
可是他老说这前面要加空格(我已经加了啊..好象空多少行都没用..)