Donde ubicar columnas que retorna una Funcion de Postgres

Iniciado por Hadess_inf, 24 Mayo 2011, 18:04 PM

0 Miembros y 1 Visitante están viendo este tema.

Hadess_inf

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.


Hadess_inf

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.

Nakp

#3
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
Ojo por ojo, y el mundo acabará ciego.

Hadess_inf

#4
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 ¿?

Nakp

#5
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
Ojo por ojo, y el mundo acabará ciego.

Hadess_inf

Código (sql) [Seleccionar]

CREATE OR REPLACE FUNCTION usp_lista_articulos()
 RETURNS SETOF record AS
$BODY$
declare lr_ret record;
BEGIN
FOR lr_ret IN
SELECT codigo, nombre FROM articulo
  LOOP
RETURN NEXT lr_ret;
END LOOP;
RETURN;
END;$BODY$
 LANGUAGE plpgsql VOLATILE


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.

Nakp

mmmm pero si ya te mencione antes routine_definition xD ese devuelve el codigo completo de la funcion :P
Ojo por ojo, y el mundo acabará ciego.

Hadess_inf

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.