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 <fhe...@gmail.com>escribió:

>
>
> 2012/11/30 Miguel A. Marquina Balta <angelmar...@gmail.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: *mmarqu...@munibarranco.gob.pe

Responder a