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
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 |