Re: variables in procedures

Lists: pgsql-sql
From: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: pgsql-sql(at)postgresql(dot)org
Subject: variables in procedures
Date: 2001-11-30 13:43:43
Message-ID: 20011130134344.BED7EFA61@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

How can I distinguish between the name and the value of a variable?

Example:

CREATE FUNCTION test(VARCHAR) RETURNS INTEGER AS '

DECLARE
col1 ALIAS FOR $1
BEGIN
select col1 from tab where col1=´´col1´´;
END;
´ LANGUAGE 'plpgsql';

Is my doubt understood?

--
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués | mmarques(at)unl(dot)edu(dot)ar
Programador, Administrador, DBA | Centro de Telematica
Universidad Nacional
del Litoral
-----------------------------------------------------------------


From: "Josh Berkus" <josh(at)agliodbs(dot)com>
To: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>, pgsql-sql(at)postgresql(dot)org
Subject: Re: variables in procedures
Date: 2001-11-30 17:09:53
Message-ID: web-517138@davinci.ethosmedia.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

Martin,

> How can I distinguish between the name and the value of a variable?

You need to name your variables something *different* from your column
names. Otherwise, you will get unexpected errors.

A practice I usually follow is prefixing my column-substitiution
variables with "v_". This allows me, and the PL/pgSQL parser, to keep
the variables straight from the columns. I also need to fix your
procedure in a couple of places. Thus:

CREATE FUNCTION test(VARCHAR) RETURNS INTEGER AS '

DECLARE
v_col1 ALIAS FOR $1;
v_result INT;
BEGIN
select col1 INTO v_result
from tab where col1 = v_col1;
RETURN v_result;
END;
´ LANGUAGE 'plpgsql';

Other SQL-procedural languages (e.g. Transact-SQL) force you to prefix
your variables with special characters. In PL/pgSQL, it's up to you to
maintain consistency.

-Josh Berkus

______AGLIO DATABASE SOLUTIONS___________________________
Josh Berkus
Complete information technology josh(at)agliodbs(dot)com
and data management solutions (415) 565-7293
for law firms, small businesses fax 621-2533
and non-profit organizations. San Francisco


From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: variables in procedures
Date: 2001-11-30 17:34:47
Message-ID: 20011130093356.A55762-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

On Fri, 30 Nov 2001, [iso-8859-1] Martn Marqus wrote:

> How can I distinguish between the name and the value of a variable?
>
> Example:
>
> CREATE FUNCTION test(VARCHAR) RETURNS INTEGER AS '
>
> DECLARE
> col1 ALIAS FOR $1
> BEGIN
> select col1 from tab where col1=col1;
> END;
> LANGUAGE 'plpgsql';
>
>
> Is my doubt understood?

AFAIK you don't distinguish, you'll probably need to name
the variable something else.