plpgsql problem
От | Lehel Gyuro |
---|---|
Тема | plpgsql problem |
Дата | |
Msg-id | 130494311.20010417100405@bin.hu обсуждение исходный текст |
Ответы |
Re: plpgsql problem
Re: plpgsql problem |
Список | pgsql-hackers |
CREATE FUNCTION userHasAll (int4,int4) RETURNS boolean AS ' DECLARE row RECORD; kirakorow kirakok%ROWTYPE; userID ALIAS FOR $1; kirakoID ALIAS FOR $2; megvan int4:=0; kepdarabok INTEGER:=0;query text; BEGIN SELECT * INTO kirakorow FROM kirakok WHERE kirako_id=kirakoID; -- this works IF NOT FOUND THEN RAISE EXCEPTION ''Invalid kirakoID''; RETURN ''f''; END IF; kepdarabok:=kirakorow.kepdarabokx*kirakorow.kepdaraboky; megvan:=0; FOR row IN EXECUTE ''SELECT count(*) AS hits FROM talalatok WHERE userid='''''' || userID || '''''' AND jatek='''''' ||kirakoID || '''''';'' LOOP -- this works too but if you replace it with the following row : -- FOR row IN SELECT count(*) AS hits FROM talalatok WHERE userid=userID AND jatek=kirakoID LOOP -- this executes as if the following query was issued -- FOR row IN SELECT count(*) AS hits FROM talalatok WHERE jatek=kirakoID LOOP megvan:=row.hits; END LOOP; -- the same applies to inline queries too. if issued with execute -- everything is fine, but if the query has more than one arguments -- the compiler dismisses all, except the last one IF megvan<>kepdarabok THEN RETURN ''f''; END IF; RETURN ''t''; END; ' LANGUAGE 'plpgsql';
В списке pgsql-hackers по дате отправления: