Я пытаюсь использовать хранимую процедуру 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', который не был предоставлен.