Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/10/2010, 07:17
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Sentencia DML dinamica.

Como lo prometido es deuda.

Cuando ejecuto la función aparte, esta es la salida.

"{"(\"{2.06585365853659,1.37488358708975,0,4}\",\" {{6,10,4,20,10,15,21,53},{139,0,0,0,0,0,0,0},{25,1 7,14,11,16,8,11,37},{136,1,1,0,1,0,0,0},{51,18,16, 11,18,8,11,6},{0,0,0,0,0,0,0,139}}\")","(\"{6.932, 1.65418843967047,4.1,10.1}\",\"{{6,10,4,20,10,15,2 1,53},{139,0,0,0,0,0,0,0},{25,17,14,11,16,8,11,37} ,{136,1,1,0,1,0,0,0},{51,18,16,11,18,8,11,6},{0,0, 0,0,0,0,0,139}}\")","(\"{29.2063829787234,1.875412 82182889,22.7,32.1}\",\"{{6,10,4,20,10,15,21,53},{ 139,0,0,0,0,0,0,0},{25,17,14,11,16,8,11,37},{136,1 ,1,0,1,0,0,0},{51,18,16,11,18,8,11,6},{0,0,0,0,0,0 ,0,139}}\")","(\"{NULL,NULL,NULL,NULL}\",\"{{6,10, 4,20,10,15,21,53},{139,0,0,0,0,0,0,0},{25,17,14,11 ,16,8,11,37},{136,1,1,0,1,0,0,0},{51,18,16,11,18,8 ,11,6},{0,0,0,0,0,0,0,139}}\")","(\"{15.9661764705 882,0.833552063773139,13.9,17}\",\"{{6,10,4,20,10, 15,21,53},{139,0,0,0,0,0,0,0},{25,17,14,11,16,8,11 ,37},{136,1,1,0,1,0,0,0},{51,18,16,11,18,8,11,6},{ 0,0,0,0,0,0,0,139}}\")","(\"{17.8890410958904,0.57 5558097230358,17.1,19.6}\",\"{{6,10,4,20,10,15,21, 53},{139,0,0,0,0,0,0,0},{25,17,14,11,16,8,11,37},{ 136,1,1,0,1,0,0,0},{51,18,16,11,18,8,11,6},{0,0,0, 0,0,0,0,139}}\")"}"

las comillas y los contraslash son caracteres que utiliza postgresql para saber en que punto corta cada tipo de dato.

Creo que ya lo solucioné, pero está en periodo de prueba.

Si lees con detenimiento el primer post, el problema era utilizar este tipo de datos haciendo uso de una tabla temporal que tomaba un nombre dinamico y esto era lo que me complicaba la cosa. Leyendo un poco mas a fondo sobre tablas temporales, tiene una opción llamada GLOBAL que juntandola con la opción ON COMMIT DROP parece solucionarme el problema de evitar crear una tabla temporal con nombre dinamico.

Código SQL:
Ver original
  1. EXECUTE 'CREATE LOCAL TEMPORARY TABLE temp_markov(cod_tabla text,tabla_markov info_mes_evento_markov[]) ON COMMIT DROP';

De esta forma, aunque hayan muchos usuarios ejecutando este proceso, puedo utilizar una unica tabla temporal para el procedimiento interno.

En resumen... creo esta tabla y la opción LOCAL me permite que solo sea interpretada por esa sesión. Mi problema anterior era que si tiraba el mismo proceso al tiempo, uno de los dos me decía que este objeto (aunque fuese temporal) ya existía.
La opción ON COMMIT DROP me permite eliminar la tabla automaticamente termine de ejecutarse el procedimiento.

No había posteado la solución, porque sigo teniendo algunos problemas (que parecen son externos al comentado en este post) pero quería esperar para dar una solución completa del asunto.

espero te ayude esto chicohot20 y gracias por el interés.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming