存储过程里动态生成包含SQL语句字符串
来源:互联网 发布:win10平板电脑软件 编辑:程序博客网 时间:2024/05/16 06:06
某些时候,我们希望直接传递字段名、表名、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 分页。
一、使用 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 分页。
- 存储过程里动态生成包含SQL语句字符串
- 性能测试:动态生成SQL语句 VS 存储过程
- 性能测试:动态生成SQL语句 VS 存储过程
- 性能测试:动态生成SQL语句 VS 存储过程
- 存储过程,--生成SQL语句
- 数据库里写了很多存储过程,想用SQL语句查出哪些存储过程包含字段(如:user_id)
- sql 存储过程生成sql 插入语句
- 存储过程生成动态条件查询语句
- 生成Insert语句SQL存储过程
- SQL Server 存储过程生成insert语句
- 存储过程中执行动态Sql语句
- mysql 存储过程 动态sql语句
- mysql存储过程执行动态sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 使用sorttable
- Access providers
- (转)XFire 与Axis2比较
- 使用jQuery后的感觉——充分享受它带来的便利
- IsNumber
- 存储过程里动态生成包含SQL语句字符串
- 如何用CSS制作横向菜单
- 开始些东西
- 接口名字的显式限定 -- 接口名字的隐藏
- [转载]Javascript 实现gb2312和utf8编码的互换
- 使用 jQuery 简化 Ajax 开发
- javascript_本地对象
- 防止页面刷新问题
- 一个简单css效果