Thread: PL/pgSQL Syntax Problem

PL/pgSQL Syntax Problem

From
Hubert Palme
Date:
Hi,

this function:

CREATE FUNCTION t_nummern(integer) -- Parameter: lfd_nr
RETURNS text AS '
  DECLARE
    lfd_nr ALIAS FOR $1;
    erg text;
    daten record;
  BEGIN
    erg := '''';
    FOR daten IN
      SELECT * INTO daten FROM telefon WHERE t_lfd_nr = lfd_nr
    LOOP
      IF erg <> '''' THEN
        erg := erg || '', '';
      END IF;
      IF daten.t_einrichtg <> '''' THEN
        erg := erg || daten.t_einrichtg || '': '';
      END IF;
      erg := erg || ''('' || daten.vorwahl || '') '' || daten.telefon_nr;
    END LOOP;
    RETURN erg;
  END;'
LANGUAGE 'plpgsql';

causes the following error:

mitglieder=> select t_nummern(330);
ERROR:  query "SELECT  * INTO daten FROM telefon WHERE t_lfd_nr =  $1 "
isn't a
SELECT
mitglieder=>

Why isn't this a SELECT??

Thanks in advance,

--
Hubert Palme                           Am Walde 1
                                 42119 Wuppertal
<hubert.palme@web.de>

Re: PL/pgSQL Syntax Problem

From
Ashley Clark
Date:
* Hubert Palme in "PL/pgSQL Syntax Problem" dated 2002/03/04 21:34 wrote:

> Hi,

Hi,

>     FOR daten IN
>       SELECT * INTO daten FROM telefon WHERE t_lfd_nr = lfd_nr

when using a for loop you don't need the into, eg.

FOR daten IN SELECT * FROM telefon WHERE t_lfd_nr = lfd_nr

each row will be placed in daten.


--
alkyl arches

Re: PL/pgSQL Syntax Problem

From
hubert.palme@web.de (Hubert Palme)
Date:
Thanks to all who answered -- you solved my problemn :-)

Hubert

 > Hubert Palme wrote:
 >> Hi,
 >>
 >> this function:
 >>
 >> CREATE FUNCTION t_nummern(integer) -- Parameter: lfd_nr
 >> RETURNS text AS '
 >> DECLARE
 >> lfd_nr ALIAS FOR $1;
 >> erg text;
 >> daten record;
 >> BEGIN
 >> erg := '''';
 >> FOR daten IN
 >> SELECT * INTO daten FROM telefon WHERE t_lfd_nr = lfd_nr
 >> LOOP
 >> IF erg <> '''' THEN
 >> erg := erg || '', '';
 >> END IF;
 >> IF daten.t_einrichtg <> '''' THEN
 >> erg := erg || daten.t_einrichtg || '': '';
 >> END IF;
 >> erg := erg || ''('' || daten.vorwahl || '') '' || daten.telefon_nr;
 >> END LOOP;
 >> RETURN erg;
 >> END;'
 >> LANGUAGE 'plpgsql';
 >>
 >> causes the following error:
 >>
 >> mitglieder=> select t_nummern(330);
 >> ERROR:  query "SELECT  * INTO daten FROM telefon WHERE t_lfd_nr =  $1 "
 >> isn't a
 >> SELECT
 >> mitglieder=>
 >>
 >> Why isn't this a SELECT??

--
Hubert Palme                           Am Walde 1
                                 42119 Wuppertal
<hubert.palme@web.de>