【发布时间】:2016-07-15 02:21:31
【问题描述】:
我使用动态 SQL 编写了一个存储过程:
create procedure [dbo].[SearchProduct]
(@ProductId int = null, @ProductName nvarchar(50) = null)
as
declare @SqlStr nvarchar(max)
declare @ParaList nvarchar(2000)
set @SqlStr = 'select p.* from dbo.Product where (1=1) '
if @ProductName is not null
set @SqlStr = @SqlStr + 'and(p.ProductName like '''%' + @ProductName2+'%''')'
set @ParaList='@ProductId2 int , @ProductName2 nvarchar(50)'
EXECUTE SP_EXECUTESQL @SqlStr,@ParaList,@ProductId,@ProductName
但我得到一个错误:
“Like operator”错误:数据类型 varchar 和 varchar 在模运算符中不兼容。
如果我改变:
set @SqlStr = @SqlStr + 'and(p.ProductName like ''%' + @ProductName2+'%'')'
我明白了:
@ProductName2 不声明。
【问题讨论】:
标签: sql sql-server stored-procedures dynamic-sql