먼저 code = $1 에 해당하는 row를 가져온 뒤, prevcode 가 있을 경우 code = prevcode 라는 조건으로 데이터를 취득하는 재귀호출문을 만들었는데...무한루프에 빠져버렸습니다...-_-; 제 머리도 같이 무한루프로... 조언 좀 부탁 드립니다.
CREATE OR REPLACE FUNCTION USERFUNC(text) RETURNS SETOF record as '
DECLARE
node RECORD;
subnode RECORD;
BEGIN
FOR node IN
SELECT price, yyyy, changerate, code, prevcode
FROM USER_TABLE
WHERE code = $1 order by yyyy desc
LOOP
return next node;
IF node.prevcode IS NOT NULL THEN
FOR subnode IN
SELECT price, yyyy, changerate, code, prevcode
FROM USERFUNC(node.prevcode) as s(price integer, yyyy integer, changerate double precision, code character, prevcode character)
LOOP
RETURN NEXT subnode;
END LOOP;
END IF;
END LOOP;
RETURN;
END
'
LANGUAGE 'plpgsql';
select * from USER_TABLE('1310405009') as s(price integer, yyyy integer, changerate double precision, code character, prevcode character);
|