平时没怎么注意这个如题的问题。
早上领教到这个问题了。
CREATE PROC P_XX (
@ii int
) AS
declare @ss varchar(1000)
set @ss ="select * from t_tab where fid ="+cast(@ii as varchar(10))
exec @ss
GO
按照以上的方法执行就会出现类似“未能找到存储过程‘select * from t_tab where fid=1’”之类的语句。
要命的是 如果@SS 这个语句很长大约要300个以上的字符的时候,后面那个段就根本显示不出来。
要执行SQL 语句 这个EXEC只要 改成 EXEC (@ss) 这整个就执行成功了。
总结:
【 EXEC @SS】 这个模式是执行存储过程的。
【EXEC (@SS)】这个才是执行SQL 语句的。