Re: Varibbles %type en Procedimeintos Almacenados para Postgres

From: "Miguel A(dot) Marquina Balta " <angelmarqui(at)gmail(dot)com>
To: Fernando Hevia <fhevia(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Varibbles %type en Procedimeintos Almacenados para Postgres
Date: 2012-12-04 14:39:54
Message-ID: CAB9RcqP-RuUOQcDPYx7C0KjX3L5p9titx-uk8CPHNCB7fFjiNw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Fernando .

De ante mano muchas gracias por la informacion , bueno solo queria
comprobar si postgres soporta el manejo de variables %rowtype o %type en
sus procedimientos almacenados tanto como parametros o variables del sp. Al
parecer si soporta porque lo acabo de comprobar ..

CREATE OR REPLACE FUNCTION prueba3(p1 operador.cod_oper%TYPE,p2
operador.nom_oper%TYPE, p3 operador.ape_oper%TYPE,p4 operador.num_ape%TYPE)
RETURNS TEXT AS
$BODY$

DECLARE
v_nom operador.nom_oper%TYPE;
v_ape operador.ape_oper%TYPE;
v_num operador.num_ape%TYPE;
v_cadena character varying(25);

BEGIN

raise notice 'Parametro: %', p1;

select nom_oper , ape_oper , num_ape into v_nom , v_ape , v_num from
operador where cod_oper = p1;

v_cadena := v_nom||v_ape||v_num;

raise notice 'Operador: %', v_cadena;

RETURN v_cadena;
END;
$BODY$
LANGUAGE plpgsql STABLE
COST 100;

ALTER FUNCTION prueba1(operadores.cod_oper%TYPE)
OWNER TO postgres;

select * from prueba3(2,'operador','MICKY',13);

El 30 de noviembre de 2012 17:47, Fernando Hevia <fhevia(at)gmail(dot)com>escribió:

>
>
> 2012/11/30 Miguel A. Marquina Balta <angelmarqui(at)gmail(dot)com>
>
> Homa amigos ..
>>
>>
>> Mi consultar a la comunicdad es sobre las variable %type estoy armando un
>> procedimiento almacenada y quiero enviar como paramero varios valoeres pero
>> que ellos sean de tipo %type , bueno al ejecutar ello
>> el pgadmin no me esta aceptando desde ya pido que si algun miembreo de la
>> comunidad trabaja o ha trabajado con variable %type en algun store
>> procedure o function porfavor haga llegar su comentario o ejemplo
>> si es que lo hubiera.. muchas gracias..
>>
>
> No estoy seguro de haberte comprendido pero arriesgo con un ejemplo a ver
> si es lo que buscas:
>
>
> Dada una tabla:
> operadores (
> cod_oper integer,
> nom_oper text );
>
> INSERT into operadores values (1, 'operador 1');
>
>
> CREATE OR REPLACE FUNCTION prueba1(p1 operadores.cod_oper%TYPE)
> RETURNS TEXT AS
> $BODY$
>
> DECLARE
> v_operador operadores.nom_oper%TYPE;
>
> BEGIN
>
> raise notice 'Parametro: %', p1;
>
> select nom_oper into v_operador from operadores where cod_oper = p1;
>
> raise notice 'Operador: %', v_operador;
>
> RETURN v_operador;
> END;
> $BODY$
> LANGUAGE plpgsql STABLE
> COST 100;
> ALTER FUNCTION prueba1(operadores.cod_oper%TYPE)
> OWNER TO postgres;
>
> select prueba1(1); -- devolverá "operador 1".
>
> Ojo que al grabar la función Postgres hará la conversión del %type al tipo
> de dato que corresponda. Un integer en este caso. Al leer la función verás
> que el parámetro es de tipo integer.
> Por lo tanto, si conoces el tipo de dato no tiene mayor sentido usar %type
> en el parámetro ya que no persistirá.
>
> Espero haya sido lo que buscabas.
>
> Saludos,
> Fernando.
>

--
*Atte. *Miguel Angel Marquina
*rpc: **994608916*
*nexteL:600 * 2100
**Email: *mmarquina(at)munibarranco(dot)gob(dot)pe

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Marcos Ortiz 2012-12-04 15:43:46 Compresión de tuplas en PostgreSQL y mejora en el shared_buffer
Previous Message Alvaro Herrera 2012-12-03 23:47:58 Re: Error interno de postgres 8.4