Nachdem einige dynamische SQL Probleme mit INT-Typ
-
22-07-2019 - |
Frage
Hallo Im mit SQL2000 so dass ich eine dynamische Abfrage und im letzten Fall bauen Ich habe diese:
IF (@apepac is not null and @nompac is not null and @month is not null )
SELECT @DynaSQL_1= @DynaSQL_1 + ' AND PACIENTE.apellidos like ''' + @apepac + '%'''+
' AND PACIENTE.nombres like ''' + @nompac + '%'''+
' AND DATENAME(MONTH,honorariotecnologo.fechaestudio) = ''' + @month +'''' +
' AND YEAR(honorariotecnologo.fechaestudio) = '+@year+''
so der Parameter @year wird auf diese Weise deklariert:
DECLARE @year int,
und die Fehler, die ich von SQL Ausgabe zu erhalten ist:
Msg 245, Level 16, State 1, Line syntax
43Error to convert the nvarchar value '
Was könnte falsch sein?
Danke!
By the way, Warum, wenn der Parameter als INT, auf dem Körper Abfrage deklariert wird, muss es gegossen werden muß / konvertiert? ...
Lösung
Sie haben zu werfen oder die INT auf einen NVARCHAR zu konvertieren. Google CAST CONVERT TSQL.
Andere Tipps
Sie benötigen @Year
als Zeichenwert werfen.
Versuchen Sie folgendes:
' AND YEAR(honorariotecnologo.fechaestudio) = ' + CAST(@year AS varchar(10))
Sie wollen, dass diese Pflege des Konvertierungsfehler nehmen ...
' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR)
Sie wollen, dass diese, wenn Sie das Apostroph bis Ende der Zeichenfolge hinzufügen möchten.
' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''