Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Transact-SQL "sp_sqlexec" (Jorge Mota)

Estas en el tema de Transact-SQL "sp_sqlexec" (Jorge Mota) en el foro de Bases de Datos General en Foros del Web. Hola... Estuve buscando en todo el foro sobre "sp_sqlexec" y la verdad que encontre un solo post que yo mismo habia dejado hace 1 año ...
  #1 (permalink)  
Antiguo 19/01/2004, 18:18
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Transact-SQL "sp_sqlexec" (Jorge Mota)

Hola... Estuve buscando en todo el foro sobre "sp_sqlexec" y la verdad que encontre un solo post que yo mismo habia dejado hace 1 año atras.. jijiji

El post era este: aqui

Bueno... Jorge, como veras recurro nuevamente a ti!

Me gustaria saber como trabaja el sp "sp_sqlexec" ya que en mi stored procedure tengo consultas muy grandes por lo que cuando ejecuto mi aplicacion (ASP) demora unos segundos en obtener una respuesta. (lo estoy testeando a nivel local y tengo buenos recursos de hard.)
Yo pregunto si el sp_sqlexec tiene que compilar la consulta e interpretarla antes de enviar la respuesta... de ser asi estimaria que mi problema de demora reside justamente en la ejecucion de lotes muy grandes.

ejemplo: (para que vean que no miento)
Cita:
@cComando AS char(5000)
IF @param = 1 BEGIN -- SI ES 1 TRABAJA CON TEMPORALES
IF @TempTable IS NOT NULL BEGIN --si parametro no es vacio
IF EXISTS(SELECT sysobjects.name FROM sysobjects WHERE NAME = @TempTable) BEGIN
SELECT @STATUS="'EL NUMERO DE AFILIADO YA EXISTE.-'"
-- --si existe tabla temporal.... y si nro de afiliado no existe en la temporal... inserto nuevo registro; y si no... hago un select de la temporal
SELECT @cComando ="IF NOT EXISTS(SELECT Id_item FROM " +@TempTable+ " WHERE NROAFILIADO="+@nroAfiliado+" and Id_item like ' % ') BEGIN
INSERT INTO " +@TempTable+"(retencion,nropliquida,tipoliquida,an ioliquida,mesliquida,aniocliquida,mescliquida"+",n roAfiliado,apellNombre,CodAJubila,sMinJub,CargoLiq uida,TipoDocu,NroDocu,AnioAntigu,RemunCApo,Devoluc CApo,SueldAnualC"+",Baja,DiasLiquid,DiasSubro,Cant Jornal,SituaRevista,TareaDiferenc,FechaIn,FechaVen cCon,AportJubil,ReajApoPer,ContribJubil"+",DescSeg urObl,DescSegurOT,DescSegurOC,DescSegurOF,DescSegu rCony,PrimasPatroART) VALUES('"+@retencion+"','"+@nropliquida+"','"+@tip oliquida+"','"+@anioliquida+"','"+@mesliquida+"',' "+@aniocliquida+"','"+@mescliquida+"','"+@nroAfili ado+"','"+@apellNombre+"','"+@CodAJubila+"','"+@sM inJub+"','"+@CargoLiquida+"','"+@TipoDocu+"','"+@N roDocu+"','"+@AnioAntigu+"','"+@RemunCApo+"','"+@D evolucCApo+"','"+@SueldAnualC+"','"+@Baja+"','"+@D iasLiquid+"','"+@DiasSubro+"','"+@CantJornal+"','" +@SituaRevista+"','"+@TareaDiferenc+"','"+@FechaIn +"','"+@FechaVencCon+"','"+@AportJubil+"','"+@Reaj ApoPer+"','"+@ContribJubil+"','"+@DescSegurObl+"', '"+@DescSegurOT+"','"+@DescSegurOC+"','"+@DescSegu rOF+"','"+@DescSegurCony+"','"+@PrimasPatroART+"')
SELECT " + @TempTable + ".Id_item, " + @TempTable + ".retencion, " + @TempTable + ".nropliquida, " + @TempTable + ".tipoliquida, " + @TempTable + ".anioliquida, " + @TempTable + ".mesliquida, " + @TempTable + ".aniocliquida, " + @TempTable + ".mescliquida, " + @TempTable + ".nroAfiliado, " + @TempTable + ".apellNombre, " + @TempTable + ".CodAJubila, " + @TempTable + ".sMinJub, " + @TempTable + ".CargoLiquida, " + @TempTable + ".TipoDocu, " + @TempTable + ".NroDocu, " + @TempTable + ".AnioAntigu, " + @TempTable + ".RemunCApo, " + @TempTable + ".DevolucCApo, " + @TempTable + ".SueldAnualC, " + @TempTable + ".Baja, " + @TempTable + ".DiasLiquid, " + @TempTable + ".DiasSubro, " + @TempTable + ".CantJornal, " + @TempTable + ".SituaRevista, " + @TempTable + ".TareaDiferenc, " + @TempTable + ".FechaIn, " + @TempTable + ".FechaVencCon, " + @TempTable + ".AportJubil, " + @TempTable + ".ReajApoPer, " + @TempTable + ".ContribJubil, " + @TempTable + ".DescSegurObl, " + @TempTable + ".DescSegurOT, " + @TempTable + ".DescSegurOC, " + @TempTable + ".DescSegurOF, " + @TempTable + ".DescSegurCony, " + @TempTable + ".PrimasPatroART FROM "+ @TempTable + " ORDER BY " + @TempTable + ".Id_item DESC
END
ELSE BEGIN
SELECT " + @TempTable + ".Id_item, " + @TempTable + ".retencion, " + @TempTable + ".nropliquida, " + @TempTable + ".tipoliquida, " + @TempTable + ".anioliquida, " + @TempTable + ".mesliquida, " + @TempTable + ".aniocliquida, " + @TempTable + ".mescliquida, " + @TempTable + ".nroAfiliado, " + @TempTable + ".apellNombre, " + @TempTable + ".CodAJubila, " + @TempTable + ".sMinJub, " + @TempTable + ".CargoLiquida, " + @TempTable + ".TipoDocu, " + @TempTable + ".NroDocu, " + @TempTable + ".AnioAntigu, " + @TempTable + ".RemunCApo, " + @TempTable + ".DevolucCApo, " + @TempTable + ".SueldAnualC, " + @TempTable + ".Baja, " + @TempTable + ".DiasLiquid, " + @TempTable + ".DiasSubro, " + @TempTable + ".CantJornal, " + @TempTable + ".SituaRevista, " + @TempTable + ".TareaDiferenc, " + @TempTable + ".FechaIn, " + @TempTable + ".FechaVencCon, " + @TempTable + ".AportJubil, " + @TempTable + ".ReajApoPer, " + @TempTable + ".ContribJubil, " + @TempTable + ".DescSegurObl, " + @TempTable + ".DescSegurOT, " + @TempTable + ".DescSegurOC, " + @TempTable + ".DescSegurOF, " + @TempTable + ".DescSegurCony, " + @TempTable + ".PrimasPatroART FROM "+ @TempTable + " ORDER BY " + @TempTable + ".Id_item DESC
END"
EXEC sp_sqlexec @cComando
END
ELSE BEGIN
--SI NO EXISTE LA TEMPORAL, LA CREO
SELECT @cComando ='Create Table '+@TempTable+' (ID_item INT IDENTITY(1,1),retencion int,nropliquida int,tipoliquida char(1),anioliquida int,mesliquida int'+',aniocliquida int,mescliquida int,nroAfiliado numeric(18,0),apellNombre char(50),CodAJubila numeric(18,0),sMinJub char(2),CargoLiquida numeric(18,0),TipoDocu int,'+'NroDocu numeric(18,0),AnioAntigu int,RemunCApo numeric(18,0),DevolucCApo numeric(18,0),SueldAnualC numeric(18,0),Baja char(4),DiasLiquid numeric(18,0),DiasSubro numeric(18,0),CantJornal numeric(18,0),SituaRevista char(1)'+',TareaDiferenc char(1),FechaIn DATETIME,FechaVencCon DATETIME,AportJubil numeric(18,0),ReajApoPer numeric(18,0),ContribJubil numeric(18,0),DescSegurObl numeric(18,0),DescSegurOT numeric(18,0),DescSegurOC numeric(18,0),DescSegurOF numeric(18,0),DescSegurCony numeric(18,0),PrimasPatroART numeric(18,0))'
EXEC sp_sqlexec @cComando
--VERIFICO SI HAY ALGUN REG EN LA TABLA LIQUIDA QUE COINCIDA CON LIQUIDACION ACTUAL; si coincide alguno... los copia a la TEMPORAL
IF EXISTS(SELECT Id_item FROM LIQUIDA WHERE RETENCION = @retencion and NROPLIQUIDA = @nropliquida and TIPOLIQUIDA = @tipoliquida and ANIOLIQUIDA = @anioliquida or Id_item like ' % ') BEGIN
SELECT @cComando ="INSERT INTO " + @TempTable + " (retencion,nropliquida,tipoliquida,anioliquida,mes liquida,aniocliquida,mescliquida"+",nroAfiliado,ap ellNombre,CodAJubila,sMinJub,CargoLiquida,TipoDocu ,NroDocu,AnioAntigu,RemunCApo,DevolucCApo,SueldAnu alC"+",Baja,DiasLiquid,DiasSubro,CantJornal,SituaR evista,TareaDiferenc,FechaIn,FechaVencCon,AportJub il,ReajApoPer,ContribJubil"+",DescSegurObl,DescSeg urOT,DescSegurOC,DescSegurOF,DescSegurCony,PrimasP atroART)" +
" SELECT retencion,nropliquida,tipoliquida,anioliquida,mesl iquida,aniocliquida,mescliquida"+",nroAfiliado,ape llNombre,CodAJubila,sMinJub,CargoLiquida,TipoDocu, NroDocu,AnioAntigu,RemunCApo,DevolucCApo,SueldAnua lC"+",Baja,DiasLiquid,DiasSubro,CantJornal,SituaRe vista,TareaDiferenc,FechaIn,FechaVencCon,AportJubi l,ReajApoPer,ContribJubil"+",DescSegurObl,DescSegu rOT,DescSegurOC,DescSegurOF,DescSegurCony,PrimasPa troART FROM LIQUIDA WHERE RETENCION = " + @retencion + " and NROPLIQUIDA = " + @nropliquida +" and TIPOLIQUIDA = '" +@tipoliquida + "' and ANIOLIQUIDA= "+ @anioliquida+ "
SELECT " + @TempTable + ".Id_item, " + @TempTable + ".retencion, " + @TempTable + ".nropliquida, " + @TempTable + ".tipoliquida, " + @TempTable + ".anioliquida, " + @TempTable + ".mesliquida, " + @TempTable + ".aniocliquida, " + @TempTable + ".mescliquida, " + @TempTable + ".nroAfiliado, " + @TempTable + ".apellNombre, " + @TempTable + ".CodAJubila, " + @TempTable + ".sMinJub, " + @TempTable + ".CargoLiquida, " + @TempTable + ".TipoDocu, " + @TempTable + ".NroDocu, " + @TempTable + ".AnioAntigu, " + @TempTable + ".RemunCApo, " + @TempTable + ".DevolucCApo, " + @TempTable + ".SueldAnualC, " + @TempTable + ".Baja, " + @TempTable + ".DiasLiquid, " + @TempTable + ".DiasSubro, " + @TempTable + ".CantJornal, " + @TempTable + ".SituaRevista, " + @TempTable + ".TareaDiferenc, " + @TempTable + ".FechaIn, " + @TempTable + ".FechaVencCon, " + @TempTable + ".AportJubil, " + @TempTable + ".ReajApoPer, " + @TempTable + ".ContribJubil, " + @TempTable + ".DescSegurObl, " + @TempTable + ".DescSegurOT, " + @TempTable + ".DescSegurOC, " + @TempTable + ".DescSegurOF, " + @TempTable + ".DescSegurCony, " + @TempTable + ".PrimasPatroART FROM "+ @TempTable + " ORDER BY " + @TempTable + ".Id_item DESC"
EXEC sp_sqlexec @cComando
END
ELSE BEGIN
-- si no hay ninguna liquidacion anterior que coincida con la actual... la puede crear el usuario como nueva....
-- despliega mensaje 'sin coincidencias' y queda a la espera de insersion de registros por parte del usuario
SELECT @STATUS = 'INGRESO MANUAL.-'
SELECT @STATUS
END
END
END
ELSE BEGIN
SELECT @STATUS = 'EL NOMBRE DE LA TABLA ES NULO.-'
SELECT @STATUS
END
END


Bueno... no te preocupes que funcion a la perfeccion... pero es simplemente una pregunta curiosa.... espero que puedas ayudarme!
__________________
tech-nico.com
  #2 (permalink)  
Antiguo 19/01/2004, 23:57
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Haber... vamos a explicarlo un poco mejor....
Mejor pasamos una parte en limpio....



Código PHP:
@cComando  AS char(5000)               
SELECT @cComando  ="IF NOT EXISTS(SELECT Id_item FROM " +@TempTable" WHERE NROAFILIADO="+@nroAfiliado+" and Id_item like ' % ') BEGIN
                                INSERT INTO " 
+@TempTable+"(retencion,nropliquida,tipoliquida,anioliquida,mesliquida,aniocliquida,mescliquida"+",nroAfiliado,apellNombre,CodAJubila,sMinJub,CargoLiquida,TipoDocu,NroDocu,AnioAntigu,RemunCApo,DevolucCApo,SueldAnualC"+",Baja,DiasLiquid,DiasSubro,CantJornal,SituaRevista,TareaDiferenc,FechaIn,FechaVencCon,AportJubil,ReajApoPer,ContribJubil"+",DescSegurObl,DescSegurOT,DescSegurOC,DescSegurOF,DescSegurCony,PrimasPatroART) VALUES('"+@retencion+"','"+@nropliquida+"','"+@tipoliquida+"','"+@anioliquida+"','"+@mesliquida+"','"+@aniocliquida+"','"+@mescliquida+"','"+@nroAfiliado+"','"+@apellNombre+"','"+@CodAJubila+"','"+@sMinJub+"','"+@CargoLiquida+"','"+@TipoDocu+"','"+@NroDocu+"','"+@AnioAntigu+"','"+@RemunCApo+"','"+@DevolucCApo+"','"+@SueldAnualC+"','"+@Baja+"','"+@DiasLiquid+"','"+@DiasSubro+"','"+@CantJornal+"','"+@SituaRevista+"','"+@TareaDiferenc+"','"+@FechaIn+"','"+@FechaVencCon+"','"+@AportJubil+"','"+@ReajApoPer+"','"+@ContribJubil+"','"+@DescSegurObl+"','"+@DescSegurOT+"','"+@DescSegurOC+"','"+@DescSegurOF+"','"+@DescSegurCony+"','"+@PrimasPatroART+"') 
                                SELECT " 
+ @TempTable ".Id_item, " + @TempTable ".retencion, " + @TempTable ".nropliquida, " + @TempTable ".tipoliquida, " + @TempTable ".anioliquida, " + @TempTable ".mesliquida, " + @TempTable ".aniocliquida, " + @TempTable ".mescliquida, " + @TempTable ".nroAfiliado, " + @TempTable ".apellNombre, " + @TempTable ".CodAJubila, " + @TempTable ".sMinJub, " + @TempTable ".CargoLiquida, " + @TempTable ".TipoDocu, " + @TempTable ".NroDocu, " + @TempTable ".AnioAntigu, " + @TempTable ".RemunCApo, " + @TempTable ".DevolucCApo, " + @TempTable ".SueldAnualC, " + @TempTable ".Baja, " + @TempTable ".DiasLiquid, " + @TempTable ".DiasSubro, " + @TempTable ".CantJornal, " + @TempTable ".SituaRevista, " + @TempTable ".TareaDiferenc, " + @TempTable ".FechaIn, " + @TempTable ".FechaVencCon, " + @TempTable ".AportJubil, " + @TempTable ".ReajApoPer, " + @TempTable ".ContribJubil, " + @TempTable ".DescSegurObl, " + @TempTable ".DescSegurOT, " + @TempTable ".DescSegurOC, " + @TempTable ".DescSegurOF, " + @TempTable ".DescSegurCony, " + @TempTable ".PrimasPatroART FROM "+ @TempTable " ORDER BY " + @TempTable ".Id_item DESC
                                END 
                                ELSE BEGIN 
                                SELECT " 
+ @TempTable ".Id_item, " + @TempTable ".retencion, " + @TempTable ".nropliquida, " + @TempTable ".tipoliquida, " + @TempTable ".anioliquida, " + @TempTable ".mesliquida, " + @TempTable ".aniocliquida, " + @TempTable ".mescliquida, " + @TempTable ".nroAfiliado, " + @TempTable ".apellNombre, " + @TempTable ".CodAJubila, " + @TempTable ".sMinJub, " + @TempTable ".CargoLiquida, " + @TempTable ".TipoDocu, " + @TempTable ".NroDocu, " + @TempTable ".AnioAntigu, " + @TempTable ".RemunCApo, " + @TempTable ".DevolucCApo, " + @TempTable ".SueldAnualC, " + @TempTable ".Baja, " + @TempTable ".DiasLiquid, " + @TempTable ".DiasSubro, " + @TempTable ".CantJornal, " + @TempTable ".SituaRevista, " + @TempTable ".TareaDiferenc, " + @TempTable ".FechaIn, " + @TempTable ".FechaVencCon, " + @TempTable ".AportJubil, " + @TempTable ".ReajApoPer, " + @TempTable ".ContribJubil, " + @TempTable ".DescSegurObl, " + @TempTable ".DescSegurOT, " + @TempTable ".DescSegurOC, " + @TempTable ".DescSegurOF, " + @TempTable ".DescSegurCony, " + @TempTable ".PrimasPatroART FROM "+ @TempTable " ORDER BY " + @TempTable ".Id_item DESC
                               END"
                   
EXEC sp_sqlexec @cComando 

Haber si ahora se entiende mejor
Me refiero a esto: (lo saque de un post de este foto)
"El problema que tiene hacer eso (utilizar sp_sqlexec con cadenas tan largas), es, que cada vez que ejecutes ese procedimiento almacenado se compila la instrucción, con lo que pierdes parte de la eficiencia de los procedimientos almacenados"


Como puedo mejorar esto??? haciendo otros SP hijos por decirlo asi?
__________________
tech-nico.com

Última edición por OXIGENO; 19/01/2004 a las 23:59
  #3 (permalink)  
Antiguo 20/01/2004, 04:42
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Si quieres mejorar ese rendimiento, cuantas tablas diferentes pueden ser las que se ejecuten?????

Crea una instrucción por cada tabla, o un sp, comprueba por el parámetro sobre que tabla debe actuar el sp y ejecutas sólo esa instrucción, o llamas al sp apropiado.

Un saludo
  #4 (permalink)  
Antiguo 20/01/2004, 08:35
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Hola Teri el sistema esta hecho para que cada usuario que se loguea al sistema pueda trabajar en su propia tabla temporal... teniendo la posibilidad de importar liquidaciones de meses anteriores... bla bla bla

Podemos suponer que voy a tener unos 10 usuarios como maximo usando el sistema... eso seria lo de menos... lo mas engorroso y que tambien ayuda a que sea lento es que desde ASP arme un estilo de DataGrid! y cada ves que el usuario Guarda los Cambios llamo el SP(recien mostrado) tantas veces como campos haya en la tabla temporal. O sea, si hay 30 registros; van a ser 30 peticiones de ida y vuelta al servidor para actualizar todos los datos. Me explico ?
NOTA: 30 registros en mi sistema es aprox. el maximo de registros que voy a utilizar. mas que eso no creo.

Tambien note que a medida que vas agregando registros al DataGrid(Tabla que se crea en el Server para el usuario que carga) se va haciendo mas notable la demora de tiempo.

Probe ejecutar mi SP desde el Query Analizer y obtengo una respuesta instantanea... claro que desde aqui no tengo peticiones de ida y vuelta.

Espero que me entiendan y me den soluciones favorables
__________________
tech-nico.com
  #5 (permalink)  
Antiguo 20/01/2004, 12:03
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Veámos si he entendido lo que estás haciendo.

Quieres que cada usuario utilice su tabla temporal para no mezclar datos, supongo, y por ello le creas una tabla temporal, que supongo al terminar borrarás, y actualizarás la principal.

Bien, si esto es así, en vez de utilizar una tabla para cada usuario, teniendo que anotarte el nombre de tabla que has creado, y siempre utilizas datos de una tabla general, en vez de una tabla pro usuario haz una sola tabla con un nuevo campo que sea nombre de usuario, y filtra los datos para ese usuario en concreto, tanto al obtenerlos como al actualizarlos.

Segunda parte, entiendo que pones los datos como si fueran una tabla, y luego, como no sabes que fila ha actualizado lo grabas todo, bueno, si esto es así, créate un control que se llame cambio(Nº de la fila) en cada control de cada fila actualizas ese control a True si cambia, y así sólo actualizas lo que sea necesario, Tendrás que obtener todos los datos de nuevo, eso sí, pero si en esa tabla el campo NombreUsuario es una clave agrupada, será rápido.

Espero haberte entendido y servirte de ayuda.

Un saludo
  #6 (permalink)  
Antiguo 20/01/2004, 17:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
ok... SI... mas o menos me has entendido... lo de la tabla temporal es simplemente una cuestion de seguridad!...
Imaginate la siguiente situacion....... cada usuario posee su propia tabla... ya que cuando se loguea, si esta no existe se crea utilizando como nombre los datos del login, por ejemplo Temp_PEREZ, y si existe solo hace un SELECT y devuelve los datos en pantalla.... Como veras... de esta forma a cualquiera de los usuarios que este cargando datos... se le corta la luz... y cuando vuelven a loguearse el SP les devuelve los datos de la tabla Temporal tal cual estaban cuando se corto la luz.
Por eso uso una tabla por usuario; Es un sistema multiusuario... todos los usuarios pueden estar cargando registros diferentes en el mismo momento!!
Por lo que la tabla temporal solo se borra cuando se graban los datos de forma definitiva en la tabla REAL!!!
Tambien de esta forma... para que el usuario no tenga que escribir lo mismo todos los meses... hay liquidaciones de meses anteriores que se pueden importar a la tabla temporal ... solo se cambian alguna cifras y listo!!

Bueno... mira... me di cuenta que el tiempo que demora mi aplicacion es en generar el grid! ya que son muchos campos ....
Okis... gracias...
__________________
tech-nico.com
  #7 (permalink)  
Antiguo 21/01/2004, 04:07
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Me sigue pareciendo que podrías utilizar una única tabla en la que tuvieras un campo que indicara el nombre del usuario, a todos los efectos el resto de cosas seguiría funcionando igual.

Aunque si el problema lo tienes porque son muchos datos a cargar, no sé si eso te resolverá mucho o nada.

Un saludo y hasta otra
  #8 (permalink)  
Antiguo 21/01/2004, 10:34
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Teri... estuve analizando lo de usar una sola tabla!... creo es como tu dices!... que seria mucho mas eficiente!
Porque nunca mas tendria que verificar si la tabla existe o no... y ya no tendria que crear o borrar una tabla.... simplemente manejaria registros!... es genial!
No... no voy a utilizar muchos registros... vamos a suponer que esta tabla la cual se va a utilizar como temporal para todos los users... va a llegar a tener unos 300 o 400 registros como maximo!!... pero no mas de eso!..
Muchas gracias Teri!
__________________
tech-nico.com
  #9 (permalink)  
Antiguo 21/01/2004, 11:43
 
Fecha de Ingreso: enero-2003
Mensajes: 25
Antigüedad: 21 años, 9 meses
Puntos: 0
Hay una cosa que no entiendo. Si no he leido mal es un procedimiento almacenado ¿no?. ¿Entonces para que usas el exec? ¿Por que no lanzas la SQL directamente?

Quiero decir que en vez de hacer esto:
Código:
@cComando  AS char(5000)               
SELECT @cComando  ="IF NOT EXISTS(SELECT Id_item FROM ".....
EXEC sp_sqlexec @cComando
haces esto directamente:
Código:
IF NOT EXISTS(SELECT Id_item FROM ".....
__________________
---- Salu2 ----

Última edición por randomize; 21/01/2004 a las 11:54
  #10 (permalink)  
Antiguo 21/01/2004, 15:11
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
Hola randomize... contestando tu pregunta!.... es exactamente por lo que vos omitiste... que es el nombre de la tabla que envio como parametro desde ASP..... asi....

Cita:
IF NOT EXISTS(SELECT Id_item FROM " +@TempTable+
Si trabajas con parametros comunes que pasas de ASP ... como por ejemplo @apellido y lo usas para guardar en una tabla que ya existe... no hay ninguna historia... armas la consulta directamente y la ejecutas!!
Pero cuando trabajas con parametros (@tabla_TEMP) que los vas a manipular como tablas... es la unica forma de hacerlo...

Saludos
__________________
tech-nico.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:17.