2009-08-05 5 views
0

Hallo Im mit SQL2000 so dass ich eine dynamische Abfrage und im letzten Fall bauen Ich habe dies:Nachdem einige dynamische SQL Probleme mit INT Typ

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) = '[email protected]+'' 

so der Parameter @year wird auf diese Weise erklärt:

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!

Übrigens, warum, wenn der Parameter als INT deklariert wird, muss er bei der Körperabfrage gegossen/konvertiert werden? ...

Antwort

1

Sie müssen den INT in einen NVARCHAR umwandeln oder konvertieren. Google CAST CONVERT TSQL.

+0

Die Antwort, die später geschrieben wurde UND ohne ein Codebeispiel! Foul, ich weine! :) –

+0

beide Code-Beispiele sind falsch, wie er in NVarchar, nicht Varchar umgewandelt werden musste. : P Und es wurden keine Antworten gepostet, wenn ich auf "submit" klicke;) –

1

Sie müssen Ihren @ als Zeichenwert eingeben.

Versuchen Sie folgendes:

' AND YEAR(honorariotecnologo.fechaestudio) = ' + CAST(@year AS varchar(10)) 
1

Sie diese Pflege der Umrechnungsfehler nehmen wollen ...

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) 

Sie das wollen, wenn Sie das Apostroph zu Ende Ihrer hinzufügen möchten Zeichenfolge.

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''