Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/12/2012, 14:59
onslaught
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Respuesta: Consulta de funciones (stored procedures)

Hola de nuevo, gracias a la ayuda encontre esto:

Código:
CREATE OR REPLACE FUNCTION test()
RETURNS SETOF dbo.planes_estudio
AS $$
BEGIN

RETURN QUERY
SELECT carrera FROM dbo.planes_estudio;

RETURN QUERY
SELECT carrera FROM dbo.carreras;

END;
$$  language plpgsql;
Sin embargo al ejecutar la funcion me devuelve lo siguiente:

Código:
ERROR:  structure of query does not match function result type
DETAIL:  Number of returned columns (1) does not match expected column count (11).
CONTEXT:  PL/pgSQL function "test" line 3 at RETURN QUERY


********** Error **********

ERROR: structure of query does not match function result type
El tipo de dato y la longitud son la misma, es un dato varchar con longitud de 1, sin embargo creo que el problema radica en la diferencia de columnas entre ambas tablas, lo cual me complicaria despues las cosas ya que las diferentes tablas que llego a utilizar son muy diferentes entre si y solo comparten el tipo de dato de uno o dos campos.

Tambien encontre Return Table y la funcion quedo asi:

Código:
CREATE OR REPLACE FUNCTION tabla()
RETURNS TABLE(carrera text, descripcion text) 
AS $$
BEGIN
RETURN QUERY
    SELECT carrera, descripcion from dbo.carreras;

RETURN QUERY
    SELECT plan_estud, nombre_plan from dbo.planes_estudio;
END; 
$$ LANGUAGE PLPGSQL;
Sin embargo el resultado sigue siendo el mismo:

Código:
ERROR:  structure of query does not match function result type
DETAIL:  Returned type character varying(2) does not match expected type text in column 1.
CONTEXT:  PL/pgSQL function "tabla" line 5 at RETURN QUERY

********** Error **********

ERROR: structure of query does not match function result type
SQL state: 42804
Alguna sugerencia?