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

您必须将 INT 转换或转换为 NVARCHAR。谷歌 CAST 转换 TSQL。

于 2009-08-05T20:53:07.553 回答
1

您需要将 @ 转换Year为字符值。

试试这个:

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

您希望这可以解决转换错误...

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

如果要将单引号添加到字符串的末尾,则需要这样做。

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