procedure ejecutado desde otro procedure y declaracion dinamica de una variable tabla en un procedure

10/10/2005 - 11:25 por .·:m·a·r·l·a:·. | Informe spam
Hola a todos:

necesito crear un procedure que seleccione determinadas lineas de una tabla,
ejecute ciertos calculos sobre estas lineas para saber si son o no
adecuadas, borre algunas y pase el resultado a otra tabla, todo ello sin
alterar la primera tabla

dicho procedure (llamemosle interno) sera llamado desde otro procedure
(llamemosle externo) el cual es utilizado por el usuario y tiene parametros
de entrada y uno de salida

mis dudas :

(A) - procedure ejecutado desde otro procedure

es posible hacer que el procedure externo no espere a que el interno acabe
para darle la salida al usuario ?? (decir que la salida al usuario de nada
depende del resultado del procedure interno)

el caso es devido a que el externo dura unos segundos en ejecutarse,
mientras que el inerno puede llegar a durar 5-6 minutos


(B) - declaracion dinamica de una variable tabla en un procedure

en el procedure interno, mi idea es de crear una variable @tabla donde
insertar las lineas necesarias de la primera tabla, hacer en esta variable
los cambios oportunos, e insertar a la tabla destino desde @tabla

decir que la tabla origuen y destino tiene (y tendran siempre) la misma
definicion en cuanto a columnas y key columnas, pero esta puede cambiar (en
ambas tablas a la vez) y no quisiera tener que modificar el procedure

a lo que se me presentan dos soluciones :
1 - crear @tabla solamente con los campos key para realizar los calculos
(los campos key son suficientes para los calculos) y hacer la insercion
referenciando (join) a la tabla origen
2 - declarar de forma "dinamica" la definicion de @tabla, para que si la
tabla origen cambia, no tener que alterar el procedure

mi pregunta es, se puede hacer esta declaracion dinamica ??

temo que la solucion numero 1 es mas compleja de realizar y posiblemente de
mantener despues, y no se que tal se llevara con el rendimiento, aunque a
bote pronto para mas estable, realmente lo es ??


gracias por adelantado a todos/as los que haceis que esos foros funcionen
 

Leer las respuestas

#1 Carlos Sacristán
10/10/2005 - 12:48 | Informe spam
En cuanto a la primera pregunta puedes echar un vistazo a este enlace,
http://groups.google.es/group/micro..._frm/threa
d/d8f9cc111c79b442/7ffe84bc858fe1e0?lnk=st&q=asincrono+group:microsoft.publi
c.es.sqlserver&rnum=2&hl=es#7ffe84bc858fe1e0, en donde el maestro Fernando
G. Guerrero presenta un ejemplo de una situación muy parecida a lo que
necesitas. Está hecho en VB6.0, pero estoy seguro que en .NET (si es lo que
estás usando ahora) hay algo similar.

En cuanto a la segunda pregunta, yo no usaría esa declaración dinámica
cuando puedes conseguir lo mismo haciendo luego un JOIN. No veo por qué
tiene que ser más complicado el mantenimiento... Con la ejecución dinámica
no te queda más remedio que usar tablas temporales globales, porque las
variable de tipo TABLE (al igual que las temporales no globales) sólo están
disponibles para el ámbito de ejecución; es decir, que sólo la verías dentro
de esa ejecución dinámica, y el uso de tablas globales trae complicaciones
puesto que están disponibles para todo el sistema (por eso son globales,
verdad?)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

".·:m·a·r·l·a:·." escribió en el mensaje
news:
Hola a todos:

necesito crear un procedure que seleccione determinadas lineas de una


tabla,
ejecute ciertos calculos sobre estas lineas para saber si son o no
adecuadas, borre algunas y pase el resultado a otra tabla, todo ello sin
alterar la primera tabla

dicho procedure (llamemosle interno) sera llamado desde otro procedure
(llamemosle externo) el cual es utilizado por el usuario y tiene


parametros
de entrada y uno de salida

mis dudas :

(A) - procedure ejecutado desde otro procedure

es posible hacer que el procedure externo no espere a que el interno acabe
para darle la salida al usuario ?? (decir que la salida al usuario de nada
depende del resultado del procedure interno)

el caso es devido a que el externo dura unos segundos en ejecutarse,
mientras que el inerno puede llegar a durar 5-6 minutos


(B) - declaracion dinamica de una variable tabla en un procedure

en el procedure interno, mi idea es de crear una variable @tabla donde
insertar las lineas necesarias de la primera tabla, hacer en esta variable
los cambios oportunos, e insertar a la tabla destino desde @tabla

decir que la tabla origuen y destino tiene (y tendran siempre) la misma
definicion en cuanto a columnas y key columnas, pero esta puede cambiar


(en
ambas tablas a la vez) y no quisiera tener que modificar el procedure

a lo que se me presentan dos soluciones :
1 - crear @tabla solamente con los campos key para realizar los calculos
(los campos key son suficientes para los calculos) y hacer la insercion
referenciando (join) a la tabla origen
2 - declarar de forma "dinamica" la definicion de @tabla, para que si la
tabla origen cambia, no tener que alterar el procedure

mi pregunta es, se puede hacer esta declaracion dinamica ??

temo que la solucion numero 1 es mas compleja de realizar y posiblemente


de
mantener despues, y no se que tal se llevara con el rendimiento, aunque a
bote pronto para mas estable, realmente lo es ??


gracias por adelantado a todos/as los que haceis que esos foros funcionen


Preguntas similares