数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2020年10月11日
 
存储过程里动态生成包含SQL语句字符串

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

使用 sp_executesql 系统存储过程执行 Unicode 字符串

直接组合 SQL 语句执行

CREATE PROCEDURE p_Test

@TableName varchar()

AS

declare @SQLString nvarchar()

set @SQLString = Nselect * from + @TableName

EXECUTE sp_executesql @SQLString

SQL 语句里包含嵌入参数

CREATE PROCEDURE p_Test

@TableName varchar()

@UserID int

@UserName varchar()

AS

declare @SQLString nvarchar()

set @SQLString = Nselect * from +

@TableName +

N where UserID=@UserID or UserName=@UserName

EXECUTE sp_executesql @SQLString

N@UserID int @UserName varchar()

@UserID @UserName

这也是 Microsoft SQL Server 的推荐做法

使用EXECUTE语句执行字符串

CREATE PROCEDURE p_Test

@TableName varchar()

AS

declare @SQLString nvarchar()

set @SQLString = Nselect * from + @TableName

EXEC(@SQLString)

以上两种方法支持在运行时生成 TransactSQL 脚本存储过程和触发器中的SQL语句有个遗憾之处则是包含 sp_executesql 或 EXECUTE 语句的批处理不能访问执行的字符串中定义的变量或局部游标例如这两种方法就没法用来做传统的 ADO 分页

上一篇:在SQL Server所在的PC运行病毒扫描软件

下一篇:使SQL Server数据支持 XML