Ketika saya mencoba menjalankan potongan SQL berikut di dalam lingkaran kursor,
set @cmd = N'exec sp_rename ' + @test + N',' +
RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''
Saya mendapatkan pesan berikut,
Msg 15248, Level 11, Status 1, Prosedur sp_rename, Baris 213
Entah parameternya@objname
ambigu atau diklaim@objtype
(COLUMN) salah.
Apa yang salah dan bagaimana cara memperbaikinya? Saya mencoba membungkus nama kolom dalam tanda kurung []
, dan tanda kutip ganda ""
seperti beberapa hasil pencarian yang disarankan.
Edit 1 -
Ini seluruh skripnya. Bagaimana cara mengirimkan nama tabel ke rename sp? Saya tidak yakin bagaimana melakukannya karena nama kolom ada di salah satu dari banyak tabel.
BEGIN TRANSACTION
declare @cnt int
declare @test nvarchar(128)
declare @cmd nvarchar(500)
declare Tests cursor for
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'pct%' AND TABLE_NAME LIKE 'TestData%'
open Tests
fetch next from Tests into @test
while @@fetch_status = 0
BEGIN
set @cmd = N'exec sp_rename ' + @test + N',' + RIGHT(@test,LEN(@test)-3) + '_Pct' + N', column'
print @cmd
EXEC sp_executeSQL @cmd
fetch next from Tests into @test
END
close Tests
deallocate Tests
ROLLBACK TRANSACTION
--COMMIT TRANSACTION
Sunting 2 - Skrip dirancang untuk mengganti nama kolom yang namanya cocok dengan pola, dalam hal ini dengan awalan "pct". Kolom muncul di berbagai tabel dalam database. Semua nama tabel diawali dengan "TestData".