您好im使用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,对身体查询它必须待浇铸/转换? ...

有帮助吗?

解决方案

您必须强制转换或INT转换为NVARCHAR。谷歌CAST CONVERT TSQL。

其他提示

您需要投你@Year作为一个字符值。

尝试这种情况:

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

您希望这照顾转换错误的......

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

如果您希望将单引号添加到字符串的结尾你要这个。

' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top