<html><div style='background-color:'><P>Por si sale error, tambien no te olvides de haber creado el tipo <STRONG>aux_dir</STRONG>, que estas definiendo en <FONT size=2>RETURNS SETOF de tu Funcion.</FONT><BR><BR></P><BR><BR><BR>
<DIV>
<P align=right><FONT face="Lucida Handwriting, Cursive" color=#0099cc size=1><STRONG>El amor es el significado último de todo lo que nos rodea. No es un simple sentimiento, es la verdad, es la alegría que está en el origen de toda creación. </STRONG></FONT><FONT face="Lucida Handwriting, Cursive" color=#ff0000 size=1><STRONG><IMG height=2 src="http://graphics.hotmail.com/greypixel.gif" width="100%" vspace=9>.:: J @ v i e r ::.</STRONG></FONT></P></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px"><FONT style="FONT-SIZE: 11px; FONT-FAMILY: tahoma,sans-serif">
<HR color=#a0c6e5 SIZE=1>
From: <I>"Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx></I><BR>To: <I><pgsql-es-ayuda(at)postgresql(dot)org></I><BR>CC: <I><pgsql-es-ayuda(at)postgresql(dot)org></I><BR>Subject: <I>RE: [pgsql-es-ayuda] Regresando tabla</I><BR>Date: <I>Tue, 7 Mar 2006 17:48:37 -0600</I><BR>>Bueno ya he encontrado el fallo, después de leer todo lo que encontré de<BR>>RETURN NEXT. El problema era la forma en como llamo a la función ya que esta<BR>>me esta regresando una tabla debo leerla:<BR>><BR>>SELECT * FROM prueba();<BR>><BR>>En este caso debo tratar a la función como una tabla.<BR>>Perdón por hacer basura.<BR>><BR>><BR>>-----Mensaje original-----<BR>>De: Miguel Angel [mailto:mvillagomez(at)sayab(dot)com(dot)mx]<BR>>Enviado el: Martes, 07 de Marzo de 2006 04:32 p.m.<BR>>Para: 'pgsql-es-ayuda(at)postgresql(dot)org'<BR>>Asunto: Regresando tabla<BR>><BR>><BR>>Qué tal
lista.<BR>>Ok, tengo dos tablas:<BR>><BR>>Tabla1 Tabla2<BR>>Clave Nombre Clave Tipo<BR>>1 A 1A AA2<BR>>2 B 1B ZX8<BR>>3 C 1C A12<BR>>4 D 2A C96<BR>>5 E 2B AY4<BR>><BR>>Me hice una consulta para que me trajera la columna Clave de la Tabla 2 sin<BR>>la ultima letra. Eso ya quedo así:<BR>><BR>>SELECT (SUBSTRING(clave,1,(LENGTH(clave)-1)))AS clave, tipo FROM tabla2<BR>><BR>>Con lo que las tables quedan así:<BR>><BR>>Tabla1 Tabla2 Resultado<BR>>Clave Nombre Clave Tipo Clave Tipo<BR>>1 A 1A AA2 1 AA2<BR>>2 B 1B ZX8 1 ZX8<BR>>3 C 1C A12 1 A12<BR>>4 D 2A C96 2 C96<BR>>5 E 2B AY4 2 AY4<BR>><BR>>Ahora lo que tengo que hacer es unir las diferentes claves que hay dentro de<BR>>la tabla 1 con su respectivo valor de la tabla resultante o sea:<BR>><BR>>Clave Nombre Clave Tipo<BR>>1 A 1 AA2<BR>> 1 ZX8<BR>> 1
A12<BR>><BR>>2 B 2 C96<BR>> 2 AY4<BR>><BR>>Bien me dirán que esto lo puedo hacer con un CROSS JOIN, pero debo hacerlo<BR>>fila a fila, y solo en aquellos valores que coincidan con la tabla<BR>>resultante, por lo que hice una función con plpgsql. Pero mi problema es que<BR>>no se como poder regresar la tabla resultante por la función. Para poder<BR>>hacer el CROSS junto con la fila de la Tabla1.<BR>>Estoy intentado con este code:<BR>><BR>>CREATE OR REPLACE FUNCTION prueba() RETURNS SETOF aux_dir AS $$<BR>>DECLARE<BR>> a aux_dir%ROWTYPE;<BR>>BEGIN<BR>> FOR a IN (SELECT (SUBSTRING(clave,1,(LENGTH(clave)-1)))AS clave, tipo FROM<BR>>tabla2) LOOP<BR>> RETURN NEXT a;<BR>> END LOOP;<BR>> RETURN;<BR>>END;<BR>>$$ LANGUAGE PLPGSQL;<BR>><BR>>SELECT prueba();<BR>><BR>>Pero me sale este error:<BR>><BR>>ERROR:
set-valued function called in context that cannot accept a set<BR>>CONTEXT: PL/pgSQL function "prueba" line 5 at return next<BR>><BR>>Puse todo por si alguien se le ocurre una mejor idea.<BR>>Espero haberme explicado claramente.<BR>><BR>><BR>><BR>><BR>>---------------------------(fin del mensaje)---------------------------<BR>>TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net<BR></FONT></BLOCKQUOTE></div></html>