这是我尝试运行的较大查询的一小部分示例。这是一个动态查询,所以我将整个事物放入一个字符串然后执行它。然而,它失败了。用户只发送月份和年份。然后我执行它。但它告诉我不能绑定字段。
declare @sqlstr varchar(5000)
set @sqlstr = 'SELECT FirstName, LastName FROM MyTable Where '
set @sqlstr = @sqlstr + CONVERT(varchar(2), MyTable.MyDateMonth) + '/1/' + CONVERT(varchar(4), MyTable.MyDateYear)
set @sqlstr = @sqlstr + ' = ''8/1/2006'''
exec(@sqlstr)
答案 0 :(得分:3)
你错过了CONVERT周围的一些引用
set @sqlstr = @sqlstr + 'CONVERT(varchar(2), MyTable.MyDateMonth) + ''/1/'' + CONVERT(varchar(4), MyTable.MyDateYear)'
添加print @sqlstr可以帮助您调试它。
此外,您将自己暴露于SQL injection,因此您应sp_ExceuteSQL而非仅仅执行