专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:14:08       共计:3637 浏览

某些时候,我们希望直接传递字段名、表名、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 分页。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:解决网站后台提交内容过大时nginx报413错误 | ·下一条:在MSSQL中执行存储过程的命令

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有