假设存储过程:proc_test
create proc proc_test
@ProdID varchar(10)
as
begin
declare @sql varchar(max)
@sql = " select * from test where 1=1"
if @ProdID <> ''
set @sql += ' and prodid=''' + @ProdID + ''''
set @sql += ' order by Id desc'
exec @sql
end
然后执行存储过程:会弹出 名称 不是有效的标识符 sql
为什么?
因为exec的时候,掉了()
正解是:exec (@sql)