• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

存储过程里动态生成包含SQL语句字符串

发布: 2007-6-21 12:06 | 作者:   | 来源:   | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

   
  某些时候,我们希望直接传递字段名、表名、where条件甚至 SQL 语句本身等字符串到存储过程,在存储过程里将不同的参数值组合成不同的 SQL 语句执行,Microsoft SQL Server 提供两种方法实现这个目的。
  

  一、使用 sp_executesql 系统存储过程执行 Unicode 字符串
  1、直接组合 SQL 语句执行
  CREATE PROCEDURE p_Test1
  @TableName varchar(20)
  AS
  declare @SQLString nvarchar(200)
  set @SQLString = N'select * from ' + @TableName
  EXECUTE sp_executesql @SQLString
  2、SQL 语句里包含嵌入参数
  CREATE PROCEDURE p_Test2
  @TableName varchar(20),
  @UserID int,
  @UserName varchar(50)
  AS
  declare @SQLString nvarchar(200)
  
  set @SQLString = N'select * from ' +
  @TableName +
  N' where UserID=@UserID or UserName=@UserName'
  
  EXECUTE sp_executesql @SQLString,
  N'@UserID int, @UserName varchar(50)',
  @UserID, @UserName
  
  这也是 Microsoft SQL Server 的推荐做法。
  
  二、使用EXECUTE语句执行字符串
  CREATE PROCEDURE p_Test3
  @TableName varchar(20)
  AS
  declare @SQLString nvarchar(200)
  set @SQLString = N'select * from ' + @TableName
  EXEC(@SQLString)
  
  以上两种方法支持在运行时生成 Transact-SQL 脚本、存储过程和触发器中的SQL语句。有个遗憾之处则是包含 sp_executesql 或 EXECUTE 语句的批处理不能访问执行的字符串中定义的变量或局部游标,例如,这两种方法就没法用来做传统的 ADO 分页。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网