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.