0

私はこのT-SQLコードを持っています:

DECLARE @DtsAcumGPSData VARCHAR (50);
SET @DtsAcumGPSData='To'+ @NAutobus + 'DtsAcumGPSData'
--
DECLARE @SQL_DtsAcumGPSData NVARCHAR(MAX);

SET @SQL_DtsAcumGPSData = N'SELECT 
      COUNTER = 0
      ,[iID]
      ,[iVehicleID]
      ,[fTripDistance]
      ,[dtDateTime]
      ,[fLongitude]
      ,[fLatitude]
      ,[bLatLongValid]
      ,[fSpeed]
      ,[bIgnition]
      ,[bStopFlag]
      ,[fTripTime]
      ,[bWorkHours]
      ,[iLogReason]
      ,[bLatLongValidGuess]
      ,[bAux1]
      ,[bAux2]
      ,[bAux3]
      ,[bAux4]
      ,[bAux5]
      ,[bAux6]
      ,[bAux7]
      ,[bAux8]
INTO '+ @DtsAcumGPSData +
N' FROM GPSData 
WHERE iVehicleID ='+ @NAutobus + --245
N'ORDER BY dtDateTime';
EXEC sp_executesql @SQL_DtsAcumGPSData;

-- ##########################################################
-- ACTUALIZANDO CONTADOR
DECLARE @COUNTER INT
SET @COUNTER = 0
DECLARE @SQL_UPDATE_DtsAcumGPSData NVARCHAR (MAX)
SET @SQL_UPDATE_DtsAcumGPSData=
N'UPDATE ' +@DtsAcumGPSData+ N'
SET '+ @COUNTER +N'= COUNTER = ' +@COUNTER+1
EXECUTE sp_executesql @SQL_UPDATE_DtsAcumGPSData

次のエラーが表示されます。

メッセージ 245、レベル 16、状態 1、手順 AutobusGenerico、行 46
nvarchar 値 'UPDATE To245DtsAcumGPSData SET' をデータ型 int に変換するときに変換に失敗しました

何か案は?

列にカウンターを設定したいCOUNTER

4

2 に答える 2

1

Dynamic SQLを使用している場合、クエリは文字列であるため、数値を連結する場合は、連結する必要があります。そうしないconvertと、エラーが発生します。

@Counterは次のとおりintであり、クエリ文字列に含めるには変換する必要があります。

DECLARE @COUNTER INT
SET @COUNTER = 0
DECLARE @SQL_UPDATE_DtsAcumGPSData NVARCHAR (MAX)
SET @SQL_UPDATE_DtsAcumGPSData=
N'UPDATE ' +@DtsAcumGPSData+ N'SET '+ cast(@COUNTER as varchar(50)) +N'= COUNTER = ' +cast(@COUNTER+1 as varchar(50))
EXECUTE sp_executesql @SQL_UPDATE_DtsAcumGPSData

この行と同じ - それ@NAutobusは次のように見えますint:

WHERE iVehicleID ='+ convert(@NAutobus as varchar(50)) 

これらのフィールドは、クエリ文字列に連結する文字列に変換する必要があります。

于 2012-11-21T22:45:06.603 に答える
0

数値をテキストに変換しない限り、数値をテキストと連結することはできません

SET @DtsAcumGPSData='To'+ CAST(@NAutobus AS VARCHAR) + 'DtsAcumGPSData'

INTO '+ CAST(@DtsAcumGPSData AS VARCHAR) +

WHERE iVehicleID ='+ CAST(@NAutobus AS VARCHAR) + 
于 2012-11-21T22:46:58.227 に答える