执行动态 sql 并为 输出参数赋值、sp_executesql 使用方法
来源:互联网 发布:自学java看什么视频 编辑:程序博客网 时间:2024/05/22 03:41
sp_executesql 过程与 exec 关键字区别
sp_executesql 可以在动态 sql 中使用变量,并且将变量输出
exec 则只能执行动态 sql 和 存储过程(执行过程不需要加小括号,执行动态 sql 则必须加小括号)
----------------------------------------------------------------------------------
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
- 执行动态 sql 并为 输出参数赋值、sp_executesql 使用方法
- 执行动态 sql 并为 输出参数赋值、sp_executesql 使用方法
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- execute sp_executesql 拼接sql 并执行
- SQLSERVER 动态执行SQL sp_executesql与EXEC
- SQLSERVER 动态执行SQL sp_executesql与EXEC
- SqlServer动态执行SQL语句sp_executesql、Exec
- SQLSERVER 动态执行SQL sp_executesql与EXEC
- 执行动态SQL,exec和exec sp_executesql
- sqlserver 动态sql执行execute和sp_executesql
- SP_EXECUTESQL 输出参数
- mysql 存储过程动态拼接sql并执行赋值
- SQL SERVER 动态执行SQL -- sp_executesql与EXEC
- 执行带嵌入参数的sql——sp_executesql
- 执行带嵌入参数的sql——sp_executesql
- 执行带嵌入参数的sql——sp_executesql
- Sql sp_executesql 参数问题
- 用sp_executesql执行动态SQL语句及获得返回值
- AbstractFactory抽象工厂与builder模式的比较
- 拦截短信
- C++:int ,long , long long类型的范围
- Wow 服务器解析
- linux下socket connect 阻塞方式 阻塞时间控制
- 执行动态 sql 并为 输出参数赋值、sp_executesql 使用方法
- Linux 下,如何创建守护进程
- 使用snmp4j实现Snmp功能(一)
- Android开发:“R cannot be resolved to a variable”的另一种解决方法
- s:url
- Sample_BezierPatch源码简析
- 学点设计模式-建造者模式
- Top 250 movies as voted by our users
- mapreduce的shuffle,partition,combine