Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Hadess_inf en 24 Mayo 2011, 18:04 pm



Título: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Hadess_inf en 24 Mayo 2011, 18:04 pm
Alquien sabe en que tabla encontrar los nombres y tipo de dato que retorna una FUNCION de POSTGRESQL ¿?

Saludos

Edito: En information_schema.routines encuentro las funciones creadas ... pero no se donde buscar los campos (con sus respectivos tipos de datos) que retorna. Ademas decir que en la tabla information_schema.columns solo se encuentra los campos de las tablas mas no de las funciones.


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Nakp en 24 Mayo 2011, 18:28 pm
supongo que en la tabla de la documentacion x'D

http://www.postgresql.org/docs/9.0/static/functions-info.html
http://www.postgresql.org/docs/9.0/static/functions-admin.html
http://www.postgresql.org/docs/9.0/static/functions-datetime.html

todo esto tomado de:
http://www.postgresql.org/docs/9.0/static/functions.html


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Hadess_inf en 25 Mayo 2011, 00:16 am
Se agradece la informacion, esta buena la documentacion, pero lo que busco no son funciones sino recuperar los nombres de las columnas que retorna una funcion ( equivalente de procedimiento en otros gestores ) ...

Gracias. y Saludos.


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Nakp en 25 Mayo 2011, 02:02 am
pues en information_schema.routines data_type y routine_definition probablemente te sirvan

fuente: http://www.postgresql.org/docs/9.0/static/infoschema-routines.html


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Hadess_inf en 25 Mayo 2011, 02:07 am
edito: Error   :-X :-X :-X

Napk : en INFORMATION_SCHEMA.routines encuentro la informacion de la funcion, pero lo que necesito es saber que campos retorna ... Gracias por la ayuda

Lo que si encontre en una pagina de la tabla
INFORMATION_SCHEMA.routines_Columns pero al parecer en el postgres no esta implementada.

Bien lo encontre pero ahora tengo un problema, la info se encuentra en

INFORMATION_SCHEMA.routines_Columns

Al ejecutar la consulta

select * from INFORMATION_SCHEMA.routines Columns

Todo anda bien, el problema es que si la uso dentro de un inner join me salta error ( es obvio porque el nombre de la tabla esta separada ... alguna idea de como solucionar esto ¿?


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Nakp en 25 Mayo 2011, 02:24 am
que querra decir esto entonces? :silbar:

data_type
character_data
Return data type of the function, if it is a built-in type, or ARRAY if it is some array (in that case, see the view element_types), else USER-DEFINED (in that case, the type is identified in type_udt_name and associated columns).
type_udt_name
sql_identifier
Name of the return data type of the function


damn solo es el tipo, no el nombre de la columna


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Hadess_inf en 25 Mayo 2011, 02:46 am
Código
  1. CREATE OR REPLACE FUNCTION usp_lista_articulos()
  2.  RETURNS SETOF record AS
  3. $BODY$
  4. DECLARE lr_ret record;
  5. BEGIN
  6. FOR lr_ret IN
  7. SELECT codigo, nombre FROM articulo
  8.   LOOP
  9. RETURN NEXT lr_ret;
  10. END LOOP;
  11. RETURN;
  12. END;$BODY$
  13.  LANGUAGE plpgsql VOLATILE
  14.  

Hacemos un select a information_schema.routines


1) data_type: record .. OK .. estoy de acuerdo contigo.
2) sql_identifier: record .. OK.. tambien estoy de acuerdo.

Conclusion: Ninguno me sirve porque lo que yo deseo saber es :

a) codigo, nombre ademas de sus tipos de datos ( respectivamente ).

Gracias por tomarte el tiempo para responder.
Saludos.

PD: Sigo buscando una solucion.


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Nakp en 25 Mayo 2011, 05:10 am
mmmm pero si ya te mencione antes routine_definition xD ese devuelve el codigo completo de la funcion :P


Título: Re: Donde ubicar columnas que retorna una Funcion de Postgres
Publicado por: Hadess_inf en 30 Mayo 2011, 16:48 pm
Bueno se cierto .. pero entonces ahora como hago para saber que tipo de dato retorna cada columna ... porque .. imaginemos que son varias consultas con varios union all .... alquien tiene alguna idea  ¿ ?

Saludos.