当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:22:00  来源:本站整理

动态SQL语句[MSSQL防范]

赞助商链接



  本文“动态SQL语句[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:??
declare @fname varchar(20)
set @fname = '[name]'
Select @fname from sysobjects???????????????????? -- 错误
Exec('select ' + @fname + ' from sysobjects')???? -- 请注意 加号前后的 单引号的边上要加空格
exec sp_executesql N' select ' + @fname + ' from sysobjects'
当然将字符串改成变量的情势也可
??? declare @s varchar(1000)
??? set @s = 'select ' + @fname + ' from sysobjects'
??? Exec(@s)??????????????? -- 成功
??? exec sp_executesql @s?? -- 此句会报错

??? declare @s Nvarchar(1000)? -- 注意此处改成nvarchar(1000)
??? set @s = 'select ' + @fname + ' from sysobjects'
??? Exec(@s)??????????????? -- 成功???
??? exec sp_executesql @s?? -- 此句精确,

3: 输出参数
eg:
declare @num,
??????? @sqls
set @sqls='select count(*) from? ' + @servername + '.a.dbo.b'
exec(@sqls)
我若何能将exec履行的后果存入变量@num中

declare @num int,
??????? @sqls nvarchar(4000)
set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
exec sp_executesql @sqls,N'@a int output',@num output
select @num   以上是“动态SQL语句[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 动态SQL语句
  • <b>基于Oracle的高性能动态SQL程序开辟</b>
  • <b>sql存储历程和动态sql的对比</b>
  • <b>详解SQL Server中的动态SQL概念</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .