设为首页 加入收藏

TOP

SQL动态执行存储过程
2014-11-24 02:54:56 来源: 作者: 【 】 浏览:1
Tags:SQL 动态 执行 存储 过程
SQL动态执行存储过程
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO www.2cto.com
CREATE PROCEDURE GetQueryDataByTableNameAndColumns
@tableName NVARCHAR(20),
@columns NVARCHAR(200)
AS
BEGIN
DECLARE @sql NVARCHAR(500)
SET @sql='SELECT '+@columns+' FROM '+@tableName
EXEC (@sql)
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Kenshin Cui
-- Create date: 2010.11.20
-- Description: Based on the specified table and column returns the query data
-- =============================================
CREATE PROCEDURE GetQueryDataByTableNameAndColumns2
@tableName NVARCHAR(20),
@columns NVARCHAR(200)
AS
BEGIN
DECLARE @sql NVARCHAR(500)
SET @sql='SELECT '+@columns+' FROM '+@tableName
EXEC sys.sp_executesql @sql
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Kenshin Cui
-- Create date: 2010.11.20
-- Description: By specifying the table name and column names to return the maximum value
-- =============================================
CREATE PROCEDURE GetMaxValueByTableNameAndColumns
@tableName NVARCHAR(20),
@columnName NVARCHAR(200)
AS
BEGIN
DECLARE @sql NVARCHAR(500)
DECLARE @outputParamDefine NVARCHAR(100)
DECLARE @maxValue NVARCHAR(50)
SET @sql='SELECT @maxValue=MAX('+@columnName+') FROM '+@tableName
SET @outputParamDefine='@maxValue NVARCHAR(50) OUTPUT'
EXEC sys.sp_executesql @sql,@outputParamDefine,@maxValue OUTPUT
SELECT @maxValue
END
GO
DECLARE @tableName NVARCHAR(20)
DECLARE @columns NVARCHAR(200)
DECLARE @sql NVARCHAR(500)--当使用sp_executesql执行时不能是VARCHAR(500)
SET @tableName='Products'
SET @columns='ProductName,UnitPrice'
SET @sql=N'SELECT '+@columns+' FROM '+@tableName
EXEC (@sql) --正确!!!
EXEC ('SELECT '+@columns+' FROM '+@tableName) --正确!!!
EXEC sys.sp_executesql @sql --正确!!!但是如果@sql定义成varchar类型此句就会出错
EXEC sys.sp_executesql N'SELECT ProductName,UnitPrice FROM Products'--正确!!!直接执行语句,语句前面必须加“N”
EXEC sys.sp_executesql N'SELECT '+@columns+' FROM '+@tableName --错误!!!不能执行sql拼接,即使前面加N
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇学生信息管理系统之数据库语句解析 下一篇统计学生成绩总和大于240分的学生..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解智能指针? (2025-12-24 12:48:26)
·c++是否应避免使用普 (2025-12-24 12:48:23)
·如何通俗易懂学会 C+ (2025-12-24 12:48:21)
·在 C 语言函数中,如 (2025-12-24 12:19:41)
·C盘里面的AppData文 (2025-12-24 12:19:38)