注册
 找回密码
 注册
江西广告网
查看: 437|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-22 16:54:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  某些时候,我们希望直接传递字段名、表名、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 分页。 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表