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