sp_executesql 过程与 exec 关键字区别 sp_executesql 可以在动态 sql 中使用变量,并且将变量输出 exec 则只能执行动态 sql 和 存储过程(执行过程不需要加小括号,执行动态 sql 则必须加小括号) ----------------------------------------------------------------------------------
declare @count int declare @sql1 nvarchar(100) declare @sql2 nvarchar(100) declare @str nvarchar(10) --1 执行需要为变量赋值的动态 sql set @str='1' set @sql1='select @count1=COUNT(*) from Base_Product where 1=@str1' print @sql1-- 调试信息输出 --注意:执行 sp_executesql 存储过程不需要加 小括号 ,加了就报错! EXECUTE sp_executesql @sql1, N'@count1 int output,@str1 varchar(10)', @count1 = @count output,@str1=@str select @count --查看统计数 --2 执行普通动态 sql set @sql2='select top 10 * from Base_Product' print @sql2-- 调试信息输出 EXECUTE (@sql2) --注意:这里如果加小括号为执行 sql 语句,不加小括号默认为执行'存储过程' /* 对 sp_executesql 存储过程做个说明 第一个参数: 很明显是要执行的拼接后的 sql 语句了,其中@count1、@str1为占位符, 为了测试所以选择了一个int和一个nvarchar 类型做测试 第二个参数: 这个参数是对第一个参数中的‘占位符’进行说明和定义用的 需要动态执行的脚本: 'select @count1=COUNT(*) from Base_Product where 1=@str1' 对占位符进行的说明: N'@count1 int output,@str1 varchar(10)' 如果动态脚本中有多个占位符时,需要在说明字符串中使用‘逗号’隔开, 如果需要在执行‘动态sql’后得到其中参数的值,需要为其标注为 output,即 @count1 int output 第三个参数到第N个参数: 这个参数是对‘占位符’中变量与实际变量绑定用的, 如果在第二个参数中标记‘站位符’为 output ,这里也需要进行一下标记 即:@count1 = @count output (注意‘占位符’中的变量名不需要加单引号) sp_executesql 语法详见: http://msdn.microsoft.com/zh-cn/library/ms188001.aspx */ /*转载保留:http://write.blog.csdn.net/postedit/7648579转载于:https://www.cnblogs.com/xxj-jing/archive/2012/06/09/2890065.html
相关资源:各显卡算力对照表!