动态SQL语句

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

1:普通SQL语句可以用Exec执行
eg:  Select*fromtableName
     Exec('select*fromtableName')
     sp_executeSQLN'select*fromtableName'   --请注意字符串前一定要加N

2:字段名,表名,名之类作为变量时,必须用动态SQL
eg:  
declare@fnamevarchar(20)
set@fname='[name]'
Select@fnamefromsysobjects                    --错误
Exec('select'+@fname+'fromsysobjects')    --请注意加号前后的单引号的边上要加空格
execsp_executeSQLN'select'+@fname+'fromsysobjects'
当然将字符串改成变量的形式也可
   declare@svarchar(1000)
   set@s='select'+@fname+'fromsysobjects'
   Exec(@s)               --成功
   execsp_executeSQL@s  --此句会报错

   declare@sNvarchar(1000) --注意此处改为nvarchar(1000)
   set@s='select'+@fname+'fromsysobjects'
   Exec(@s)               --成功   
   execsp_executeSQL@s  --此句正确,

3:输出参数
eg:
declare@num,
       @SQLs
set@SQLs='selectcount(*)from '+@servername+'.a.dbo.b'
exec(@SQLs)
我如何能将exec执行的结果存入变量@num中

declare@numint,
       @SQLsnvarchar(4000)
set@SQLs='select@a=count(*)from'+@servername+'.a.dbo.b'
execsp_executeSQL@SQLs,N'@aintoutput',@numoutput
select@num


<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值