From: | "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Regresando una tabla |
Date: | 2006-03-07 22:31:07 |
Message-ID: | 20060307223129.0E0F69DC801@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Qué tal lista.
Ok, tengo dos tablas:
Tabla1 Tabla2
Clave Nombre Clave Tipo
1 A 1A AA2
2 B 1B ZX8
3 C 1C A12
4 D 2A C96
5 E 2B AY4
Me hice una consulta para que me trajera la columna Clave de la Tabla 2 sin
la ultima letra. Eso ya quedo así:
SELECT (SUBSTRING(clave,1,(LENGTH(clave)-1)))AS clave, tipo FROM tabla2
Con lo que las tables quedan así:
Tabla1 Tabla2 Resultado
Clave Nombre Clave Tipo Clave Tipo
1 A 1A AA2 1 AA2
2 B 1B ZX8 1 ZX8
3 C 1C A12 1 A12
4 D 2A C96 2 C96
5 E 2B AY4 2 AY4
Ahora lo que tengo que hacer es unir las diferentes claves que hay dentro de
la tabla 1 con su respectivo valor de la tabla resultante o sea:
Clave Nombre Clave Tipo
1 A 1 AA2
1 ZX8
1 A12
2 B 2 C96
2 AY4
Bien me dirán que esto lo puedo hacer con un CROSS JOIN, pero debo hacerlo
fila a fila, y solo en aquellos valores que coincidan con la tabla
resultante, por lo que hice una función con plpgsql. Pero mi problema es que
no se como poder regresar la tabla resultante por la función. Para poder
hacer el CROSS junto con la fila de la Tabla1.
Estoy intentado con este code:
CREATE OR REPLACE FUNCTION prueba() RETURNS SETOF aux_dir AS $$
DECLARE
a aux_dir%ROWTYPE;
BEGIN
FOR a IN (SELECT (SUBSTRING(clave,1,(LENGTH(clave)-1)))AS clave, tipo FROM
tabla2) LOOP
RETURN NEXT a;
END LOOP;
RETURN;
END;
$$ LANGUAGE PLPGSQL;
SELECT prueba();
Pero me sale este error:
ERROR: set-valued function called in context that cannot accept a set
CONTEXT: PL/pgSQL function "prueba" line 5 at return next
Puse todo por si alguien se le ocurre una mejor idea.
Espero haberme explicado claramente.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-03-07 23:05:28 | Re: Consulta sobre Transacciones. |
Previous Message | Mario Gonzalez | 2006-03-07 21:48:19 | Re: formatear fecha |