- 关 键 词:
- sql server
- microsoft
- 存储过程
某些时候,我们希望直接传递字段名、表名、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 分页。保留地址 http://www.qqread.com/network/server/y343178181.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 自摧毁邮件出现 服务器上不留痕迹 (0次浏览)
- Exchange安装因错误0x80070422失败 (0次浏览)
- Exchange 2007中如何授予邮箱的代理发送权限 (0次浏览)
- 分析刀片与机架式服务器的选择问题 (0次浏览)
- 如何增强Exchange服务器的安全性 (0次浏览)
- 微软Windows试水高端企业级服务器市场 (0次浏览)
- XML入门教程:服务器上的XML (0次浏览)
- Ubuntu用Apache2管理Subversion控制系统 (0次浏览)
- 搭建Exchange2007企业邮箱系统方案 (0次浏览)
- 服务器虚拟化的价值以及存在的问题 (0次浏览)



