PL/pgSQL Syntax Problem

Started by Hubert Palmeabout 24 years ago6 messagesgeneral
Jump to latest
#1Hubert Palme
hubert.palme@web.de

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>

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hubert Palme (#1)
Re: [INTERFACES] PL/pgSQL Syntax Problem

Hubert Palme <hubert.palme@web.de> writes:

ERROR: query "SELECT * INTO daten FROM telefon WHERE t_lfd_nr = $1 "
isn't a
SELECT

Why isn't this a SELECT??

Get rid of the INTO ...

regards, tom lane

#3Ashley Clark
aclark@ghoti.org
In reply to: Hubert Palme (#1)
Re: PL/pgSQL Syntax Problem

* 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

#4Hubert Palme
hubert.palme@web.de
In reply to: Hubert Palme (#1)
Re: PL/pgSQL Syntax Problem

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>

#5daq
daq@ugyvitelszolgaltato.hu
In reply to: Hubert Palme (#1)
Re: PL/pgSQL Syntax Problem

The syntax is:
SELECT INTO daten * FROM telefon WHERE t_lfd_nr = lfd_nr

DAQ

#6Noname
rolf.ostvik@axxessit.no
In reply to: daq (#5)
Re: PL/pgSQL Syntax Problem

On 2002-03-04 21:34 Hubert Palme <hubert.palme@web.de> wrote :

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

Remove this ^^^^^^^^^^
so that the "FOR ... SELECT" is

FOR daten IN
SELECT * 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';

regards
--
Rolf