Thread: variables in procedures

variables in procedures

From
Martín Marqués
Date:
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
BEGINselect 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@unl.edu.ar
Programador, Administrador, DBA |       Centro de Telematica                      Universidad Nacional
        del Litoral
 
-----------------------------------------------------------------


Re: variables in procedures

From
"Josh Berkus"
Date:
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
informationtechnology      josh@agliodbs.com  and data management solutions       (415) 565-7293 for law firms, small
businesses       fax 621-2533   and non-profit organizations.      San Francisco
 


Re: variables in procedures

From
Stephan Szabo
Date:
On Fri, 30 Nov 2001, [iso-8859-1] Mart�n Marqu�s 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.