From: | "Hector R(dot) De los Santos " <zahory(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] [OT] Algunas funciones útiles para desarrollo en postgresql |
Date: | 2011-10-05 18:58:48 |
Message-ID: | CALX2jtBBnf+fQ__OtuapJeZKJBA5UhAU47=N7VcO1frd_U8QMA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Saludos
Talvez esto tambien les pueda interesar:
http://hdsconsultores.net/pgtools/GeneradordeSp%28PG%29.txt
http://hdsconsultores.net/pgtools/Generador%20de%20Sp%27s.sql
Hace un tiempo lo hice y lo publique a la lista, talvez les sirva, yo lo
utilizo mucho.
:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363
El 3 de octubre de 2011 18:50, Alejandro Carrillo <fasterzip(at)yahoo(dot)es>escribió:
Asi no es, simplemente es usando un parametro de entrada de tipo refcursor,
> luego abres ese cursor con open y listo. Esa funcion no deberia devolver
> nada (void) y para mostrar los datos usa un fetch all in 'cur' despues de
> haber ejecutado la funcion.
>
>
> ------------------------------
> *De:* Anthony <asotolongo(at)uci(dot)cu>
> *Para:* Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
> *CC:* "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
> *Enviado:* lunes 3 de octubre de 2011 16:49
>
> *Asunto:* Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] [OT] Algunas funciones
> útiles para desarrollo en postgresql
>
> El 03/10/2011 17:29, Alejandro Carrillo escribió:
>
> Para insert, update y delete es más rapido como le comenté (sin EXECUTE
> consulta)
> Para el select de la tabla tiene 3 opciones:
> 1) usar un parámetro refcursor en la funcion de la tabla y mostrar el
> resultado de ese parametro usando un FETCH ALL IN CURSORNUEVO (recomiendo
> esta ya que se presta para cuando se cambie la estructura de la tabla, no
> hay que cambiar el uso de la funcion y puede devolver varias cursores
> dependiendo de los valores de entrada)
> 2) crear una function que devuelva un setof record y tener el mismo
> numero y tipo de parametros de salida que el numero y tipo de datos de los
> campos a mostrar. Más info ver:
> http://www.postgresonline.com/journal/archives/201-returns-table.html
> 3) retornar un tipo table (que a la larga es lo mismo que el punto
> anterior, toca ver cual es más veloz)
> Para EL SELECT GENERAL falta explicarlo como se debe ejecutar (un ejemplo
> como el que le habia comentado).
>
> ------------------------------
> *De:* Anthony <asotolongo(at)uci(dot)cu> <asotolongo(at)uci(dot)cu>
> *Para:* Alejandro Carrillo <fasterzip(at)yahoo(dot)es> <fasterzip(at)yahoo(dot)es>
> *CC:* "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
> <pgsql-es-ayuda(at)postgresql(dot)org> <pgsql-es-ayuda(at)postgresql(dot)org>
> *Enviado:* lunes 3 de octubre de 2011 16:15
> *Asunto:* Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] [OT] Algunas funciones
> útiles para desarrollo en postgresql
>
> El 03/10/2011 11:38, Alejandro Carrillo escribió:
>
> Hola
>
> Ya le eché la revisada.
> Que me gusto:
> 1) La aplicación no tiene lio a la hora de instalarse, solo descomprimir y
> ya.
> 2) Efectivamente hace su trabajo de crear las funciones.
>
> Que no me gusto:
> 1) Sentencias como RETURN QUERY EXECUTE son lentas a la hora de ejecutarse
> y estas sentencias solo deben ejecutarse en casos donde no se sepa como va a
> llegar la sentencia. Además se suelen prestar para ejecutar inyecciones SQL.
> En mi concepto personal, prefiero las sentencias hechas a la medida y que se
> vayan modificando a medida de las necesidades.Ej:
> consulta:='insert into public.dato (iddato,nombredato,fecha,edad) values
> (' || $1 || ')' ;
> EXECUTE consulta;
> esta sentencia se ejecutará más lento que una función donde tome los
> parametros y los inserte sin usar execute.
> 2) En el manual no dice como usar las funciones, en especial la funcion
> de Select_general.
> La de select_general debe usarse asi:
> select * from public.select_general('select * from dato where 1=1') as tt
> (p_iddato integer, p_nombredato character varying, p_fecha date, p_edad
> numeric);
>
> ------------------------------
> *De:* Anthony <asotolongo(at)uci(dot)cu> <asotolongo(at)uci(dot)cu>
> *Para:* Alejandro Carrillo <fasterzip(at)yahoo(dot)es> <fasterzip(at)yahoo(dot)es>
> *CC:* "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
> <pgsql-es-ayuda(at)postgresql(dot)org> <pgsql-es-ayuda(at)postgresql(dot)org>
> *Enviado:* viernes 5 de abril de 2002 16:11
> *Asunto:* [pgsql-es-ayuda] Re: [pgsql-es-ayuda] [OT] Algunas funciones
> útiles para desarrollo en postgresql
>
> On 03/10/11 09:41, Alejandro Carrillo wrote:
>
> http://code.google.com/p/generadorprocparapostgresql/
> Es un generador de procedimientos almacenados para postgresql. FUE TOMADO
> DE otro proyecto q estaba abandonado llamado pgp-generator. Me pareció buena
> la idea y para no dejarlo morir creé este proyecto.
> Contiene soporte para la creación de insert, delete, update y select, solo
> debe escribir el nombre de ls funcion, el esquema y la tabla y este se
> encarga de generar el procedimiento almacenado de la fucnion
> solicitada(insert,delete,update,select)
>
>
> http://code.google.com/p/datageneratorpostgresql/
> Es un generador de datos para tablas en postgresql. Le crea datos con el
> fin de probar velocidad en consultas, actualizaciones y borrados de datos en
> una tabla. Solo debe: 1) Crear el lenguaje plpgsql 2) Crear el schema utils
> para que estas funciones queden depositadas en ese schema 3) Pasar el nombre
> del schema, la tabla, numero de registros a insertar/generar y el numero en
> ascii inicial y final (ej: espacio es el nro ascii 32, comilla simple es 34)
> EJ: select utils.creardatostabla('public','clientes',50,32,78) 4) Disfrútalo
> y recomiendalo a tus amigos
> Posdata: Puede insertar registros con caracteres especiales como comilla
> simple('), doble(") y barra invertida "\", lo cual lo hace muy bueno a la
> hora de experimentar con campos especiales
>
> 2 proyectos de su humilde servidor.
>
> ¿Opiniones, sugerencias, correcciones?
>
> Hola algo como lo primero que pones tenemos algo por aca desarrollado en su
> version inicial (CRUD-PG) , aunque hemos organizado algunas ideas que
> pretendemos poner en el futuro para mejorarlo, pero este esta funcional si
> deseas conocerlo esta aqui
> http://postgresql.uci.cu/node/74
>
> y el link de descarga:
> http://postgresql.uci.cu/descargas/tools/CRUD-PG%201.1.tar.bz2
>
> saludos
>
> PD: el segundo que envias tampoco lo conocia , pero me interesa utilizarlos
> gracias.
>
>
> me alegro que tengas aspectos que le guste tendré en cuenta sus
> sugerencias, pero es que utilizo el ejemplo que usted me sugiere para
> ejecutar las sentencias(insert, update y delete) Ej:consulta:='insert into
> public.dato (iddato,nombredato,fecha,edad) values (' || $1 || ')' ;
> EXECUTE consulta;
>
> pero para consultas select que me interesa el resultado tengo que
> ejecutarlos con RETURN QUERY EXECUTE pues es la única forma que conozco, al
> menos yo, de ejecutar conusltas dinámicas formadas por concatenacion de
> cadenas y pueden variar , entiendo que son un poco lentas si las ejecuto asi
> pero bueno, si desea coolaborar con la solucion , son bienvenidos sus
> sugerencias, hace tiempo que no le hago nada.
> saludos y gracias!!!
>
>
> Ok , Gracias!!!! a todos miren este ejemplo usando cursores pero de otro
> modo al que me dicen que es como los entiendo y diganme si lo recomiendan?:
> CREATE OR REPLACE FUNCTION cliente_select_condicional_cursor(condicional
> text)
> RETURNS SETOF cliente AS
> $BODY$
> DECLARE
> resultado public."cliente" ;
> consulta text ;
> micursor refcursor;
> begin
> open micursor for execute 'select * from public."cliente" where ' || $1;
> loop
> fetch micursor into resultado;
> exit when not found;
> return next resultado;
>
> end loop;
> return;
> end;
> $BODY$
> LANGUAGE plpgsql VOLATILE
>
> despues llamo la funcion: select * from
> cliente_select_condicional_cursor('id=1')
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | numael vacca | 2011-10-05 20:16:24 | Postgres RPM o compilar el codigo? |
Previous Message | Alvaro Herrera | 2011-10-05 18:43:41 | Re: [OT] Megapost de Postgresql |