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';



---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to