0

こんにちは、SQL2000 を使用しているので、動的クエリを作成します。最後のケースでは、次のようになります。

 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+''

したがって、パラメーター @year は次のように宣言されます。

DECLARE @year int,

SQL出力から得られるエラーは次のとおりです。

Msg 245, Level 16, State 1, Line syntax 
43Error to convert the nvarchar value '

何が間違っている可能性がありますか?

ありがとう!

ところで、パラメーターが INT として宣言されている場合、本体クエリでキャスト/変換する必要があるのはなぜですか? ...

4

3 に答える 3

1

これで変換エラーを処理したい...

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

文字列の末尾に一重引用符を追加する場合は、これが必要です。

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''
于 2009-08-05T21:09:03.793 に答える
1

INT を NVARCHAR にキャストまたは変換する必要があります。Google CAST CONVERT TSQL。

于 2009-08-05T20:53:07.553 に答える
1

Year@を文字値としてキャストする必要があります。

これを試して:

' AND YEAR(honorariotecnologo.fechaestudio) = ' + CAST(@year AS varchar(10))  
于 2009-08-05T20:53:53.713 に答える