sqlserver 动态sql执行execute和sp_executesql,用动态SQL语句给变量赋值
Posted 博客燕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 动态sql执行execute和sp_executesql,用动态SQL语句给变量赋值相关的知识,希望对你有一定的参考价值。
sp_executesql的运用
书写语法要点:
exec sp_executesql @sql,N’参数1 类型1,参数2 类型2,参数3 类型3 OUTPUT’,参数1,参数2,参数3 OUTPUT;
注意参数前后顺序必须对应好 如下图不同颜色的标记
简易测试代码:
declare @FSQL nVARCHAR(1000),@FF VARCHAR(100) SET @FSQL=\'SELECT @FF=\'\'AA\'\' \' PRINT @FSQL exec sp_executesql @FSQL,N\'@FF VARCHAR(100) OUT\',@FF OUT
SELECT @FF
注意
1> @sql 必须为ntext/nchar/nvarchar类型
2> @sql的参数赋值语句的前面必须用"N",转换为Unicode字符串
--定义一个游标 declare zb_cur cursor for select zb_gl.zb_sql_gs from zb_gl<br>--@zb_sql为动态sql,过程需要类型为 \'ntext/nchar/nvarchar\' 的参数 \'@statement\'。 declare @zb_sql nvarchar(2000) declare @ymd varchar(20) set @ymd=\'2019-1-1\' --打开游标 open zb_cur while 0=0 begin --读取游标 fetch next from zb_cur into @zb_sql if @@FETCH_STATUS=0 begin print @zb_sql exec sp_executesql @zb_sql,N\'@ymd varchar(20)\',@ymd end else break end close zb_cur --摧毁游标 deallocate zb_cur
以上是关于sqlserver 动态sql执行execute和sp_executesql,用动态SQL语句给变量赋值的主要内容,如果未能解决你的问题,请参考以下文章
sql server 执行计划(execution plan)介绍
SQL Server安全(6/11):执行上下文与代码签名(Execution Context and Code Signing)