轉載自http://blog.csdn.net/xb12369/article/details/8202703
假設存儲過程: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)