我正在尝试将sp_rename
存储过程与变量一起使用,因为我无法控制源(将列名更改为具有日期的 Excel 文件)。
我删除一个表,然后导入该表。然后我想更改该表的列名,因此我使用模式查询来找出当前列是什么,以便我可以使用以下命令进行更改sp_rename
:
USE ESS
GO
DECLARE @TotalName NVARCHAR(255)
DECLARE @ColName NVARCHAR(255)
DECLARE @NewName NVARCHAR(255)
SELECT
@ColName = column_name
FROM
information_schema.columns
WHERE
TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'serverinv_unix_system_assignments_staging'
AND ordinal_position = 1;
SET @TotalName = CONCAT(N'dbo.serverinv_unix_system_assignements_staging.' ,@ColName)
SET @NewName = ''''+ @TotalName+ ''','''+''+'server_name'+''','''+'COLUMN'';'+''
-- Select @NewName
EXEC sp_rename @NewName
如果我像下面这样明确地输入它,它就会起作用。
USE ESS
GO
EXEC sp_rename 'dbo.serverinv_unix_system_assignments_staging.Hostname as of 8/26/2018','server_name','COLUMN';
GO
我在第一个代码集上遇到的错误是
消息 201,级别 16,状态 4,过程 sp_rename,第 0 行 [批处理开始行 2]
过程或函数“sp_rename”需要参数“@newname”,但未提供该参数。