在代码中拼接SQL命令与在存储过程中拼接的区别

newdigitime newdigitime 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一般说来在代码中拼接SQL命令,容易让别人钻空子玩SQL注入,
我看了有些存储过程的代码,发现在存储过程中也是对各参数进行拼接。
这好象与在代码中拼接没什么区别啊,难道在存储过程拼接就更安全?
譬如下面这个存储过程:

Create PROCEDURE [dbo].[ShowPage]
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = ''*'', -- 需要返回的列
@strOrder varchar(255)='''', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@strWhere varchar(1500) = '''' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000)

if @strWhere !=''''
set @strWhere='' where ''+@strWhere

set @strSQL=''Select * FROM (Select ROW_NUMBER() OVER (''+@strOrder+'') AS pos,''+@strGetFields+'' FROM [''+@tblName+'']''+@strWhere+'') AS sp Where pos BETWEEN ''+str((@PageIndex-1)*@PageSize+1)+'' AND ''+str(@PageIndex*@PageSize)
本文转摘自『蓝派网』http://www.lan27.com/Article/200810/8986.htm
...全文

相关推荐

SQL Server EXEC和sp_executesql的区别

SQL Server EXEC和sp_executesql的区别

pds2008

SQLServer:探讨EXEC与sp_executesql的区别详解

摘要1,EXEC的使用2,sp_executesql的使用MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码。EXEC在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用sp_executesql. 1,EXEC的使用EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。

weixin_38747592

SqlServer存储过程实现及拼接sql的注意点

这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改。由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通!   其实就是很简单的一个SQL语句:   update table1 set field1=value1,field2 = value2 where id = id   我写成什么样子了呢?大家且看:  declare @tableName nvarchar(50),       @field1 int,       @field2 nvarchar,       @i

weixin_38531210

sql\(很长的l模糊查询拼接)sql存储过程

sql\(很长的l模糊查询拼接)sql存储过程.txtsql\(很长的l模糊查询拼接)sql存储过程 大家下载吧 好东西

nitaiyoucala

存储过程拼接字符串

用sql语句拼接字符串

jingxiao64
评论 34
收藏 已收藏
分享
返回顶部
newdigitime
疑难问题 22,298 成员 121,727 内容