25/10/2010, 14:30
|
| Colaborador | | Fecha de Ingreso: febrero-2009 Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses Puntos: 360 | |
Sentencia DML dinamica. Buen día foreros.
Les cuento
Tengo un procedimiento con un tipo de dato definido por mi. CREATE TYPE ejemplo AS (campo1 double precision[],campo2 integer[]);
Tengo un procedimiento que me retorna un array de este tipo y lo almaceno en una variable dentro de otro procedimiento. DECLARE
variable1 ejemplo[];
BEGIN
variable1 := funcion_retorna_tipo_de_dato_ejemplo(campo1,campo2 );
Quiero almacenar en una tabla temporal (creada con nombre aleatorio mientras dura la sesión) el valor de variable1. EXECUTE 'CREATE TEMPORARY TABLE ' || nombre_aleatorio || '(campo1 text,campo2 ejemplo[])';
La tabla se crea bien.... pero cuando trato de hacer esto: EXECUTE 'INSERT INTO ' || nombre_aleatorio || ' VALUES(''t_1_2'',' || variable1 || ')';
Me genera error. este error se da por que el execute tiene como sentencia de ejecución un text y asi mismo me toma mi tipo de dato ejemplo[].
Si no tuviese que hacer el nombre de la tabla temporal dinamico sería tan sencillo como esto: INSERT INTO tabla VALUES('t_1_2',variable1);
Existe alguna forma de cambiar el formato de salida de un array? que no sea {{1,2},{3,4}} sino array[[1,2],[3,4]]?
O en ultimas, poder hacer funcionar una sentencia EXECUTE que me tome la variable como el tipo de dato real?
Espero me hayan entendido.
Muchas gracias
__________________ Without data, You are another person with an opinion.
W. Edwads Deming |