您好我使用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,在body查询中必须进行转换/转换? ...
答案 0 :(得分:1)
您必须将INT转换或转换为NVARCHAR。 Google CAST CONVERT TSQL。
答案 1 :(得分:1)
您需要将@ Year
转换为字符值。
试试这个:
' AND YEAR(honorariotecnologo.fechaestudio) = ' + CAST(@year AS varchar(10))
答案 2 :(得分:1)
您希望这可以解决转换错误...
' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR)
如果您想将单引号添加到字符串的末尾,则需要此选项。
' AND YEAR(honorariotecnologo.fechaestudio) = '+CAST(@year AS VARCHAR) + ''''