Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2012, 09:54
asalazarayllon
 
Fecha de Ingreso: febrero-2012
Mensajes: 7
Antigüedad: 12 años, 3 meses
Puntos: 0
query dinámico

Amigos (as)

Tengo un nuevo problema para compartirlo y pedirles ayuda para resolverlo, se trata de un query dinámico que me permite generar una UPDATE que tiene la siguiente forma:

SET @CadenaColumna = 'UPDATE ##MatrizVariables SET '
SET @CadenaColumna = @CadenaColumna +' '+ @NombreVariable +'=('
SET @CadenaColumna = @CadenaColumna +' '+ 'SELECT Valor FROM PlanillaVariables WHERE IdTablero='
SET @CadenaColumna = @CadenaColumna +' '+ @IdTablero +'AND' + 'IdVariable = '+ @IdVariable +'AND' + 'IdMes= '+ @Mes+')'
SET @CadenaColumna= @CadenaColumna + 'WHERE IdMes=' + @Mes

exec (@CadenaColumna)

cuando lo ejecuto SQL server 2005 me envía el siguiente mensaje:

Conversion failed when converting the varchar value 'UPDATE ##MatrizVariables SET CumPlanTrabajo=( SELECT Valor ' to data type int.

Algunas aclaraciones:
1.- La variable @CadenaColumna es un VARCHAR (600)
2.- La variable @NombreVariable representa a una columna de la tabla temporal ##MatrizVariables, dicha columna es un DECIMAL(18,2)
3.- Si se conociera el nombre de la columna de la tabla ##MatrizVariables que se quiere actualizar la sentencia sería de esta forma:

UPDATE ##MatrizVariables SET CumPlanTrabajo=(
SELECT Valor
FROM PlanillaVariables
WHERE IdTablero=@IdTablero
AND IdVariable = @IdVariable
AND IdMes=@Mes
)
WHERE IdMes=@Mes

Última edición por asalazarayllon; 14/03/2012 a las 10:38