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? ...

War es hilfreich?

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) + ''''
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top