Sql server 如何使用变量设置存储过程sql server中的行名称
我需要使用变量来设置名称行,但我有错误Sql server 如何使用变量设置存储过程sql server中的行名称,sql-server,Sql Server,我需要使用变量来设置名称行,但我有错误 谢谢您的帮助试试这个示例脚本,我已经在程序中使用了示例表,通过变量输入的值将是别名列名 CREATE PROCEDURE Usp_procedure (@var int) AS Begin DECLARE @Sql nvarchar(max) SET @Sql=' SELECT EmployementStatus AS '+ QUOTENAME(CAST(@var AS VARCHAr(10)))+' from [dbo].[EmployeeInfo]
谢谢您的帮助试试这个示例脚本,我已经在程序中使用了示例表,通过变量输入的值将是别名列名
CREATE PROCEDURE Usp_procedure (@var int)
AS
Begin
DECLARE @Sql nvarchar(max)
SET @Sql='
SELECT EmployementStatus AS '+ QUOTENAME(CAST(@var AS VARCHAr(10)))+'
from [dbo].[EmployeeInfo]'
--Print @Sql
EXEC (@Sql)
END
EXEC Usp_procedure @var=1
结果
1
-------
Intern
Jr. DBA
您可以使用动态SQL实现这一点。像这样的
CREATE PROCEDURE dbo.MyProc
(
@ColNm VARCHAR(20)
)
AS
BEGIN
DECLARE @Qry VARCHAR(MAX)
SELECT
@Qry = 'SELECT '+@ColNm+' = Col_Name FROM YourTable'
EXEC(@Qry)
END
您能告诉我们错误吗?您必须使用动态sql来实现这一点。为什么需要动态地允许命名列?这似乎是应该在表示层而不是数据库中执行的操作。@var在这里是int类型的。它本身不包含名称,而是参数的名称。如果出于任何奇怪的原因,您希望该列也被命名为@var,那么这是可能的:将其转义为[@var]。如果您需要实际的动态列名,请参阅Sean的备注。但是,如果你的列名实际上是数字,那么整个事情就有点不明智。
CREATE PROCEDURE dbo.MyProc
(
@ColNm VARCHAR(20)
)
AS
BEGIN
DECLARE @Qry VARCHAR(MAX)
SELECT
@Qry = 'SELECT '+@ColNm+' = Col_Name FROM YourTable'
EXEC(@Qry)
END