Aşağıdaki SQL parçacığını bir imleç döngüsü içinde çalıştırmayı denediğimde,
set @cmd = N'exec sp_rename ' + @test + N',' +
RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''
Aşağıdaki mesajı alıyorum,
Msg 15248, Düzey 11, Durum 1, Prosedür sp_rename, Satır 213
Parametre@objname
belirsiz veya talep edilen@objtype
(COLUMN) yanlış.
Yanlış olan nedir ve bunu nasıl düzeltirim? Sütun adını köşeli parantez []
ve ""
bazı arama sonuçlarının önerdiği gibi çift tırnak içine almayı denedim .
Düzenle 1 -
İşte tüm senaryo. Tablo adını sp yeniden adlandırmaya nasıl iletirim? Sütun adları birçok tablodan birinde yer aldığı için bunu nasıl yapacağımdan emin değilim.
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
Düzenleme 2 - Komut dosyası, adları bir kalıpla eşleşen sütunları, bu durumda bir "pct" öneki ile yeniden adlandırmak için tasarlanmıştır. Sütunlar, veritabanı içindeki çeşitli tablolarda yer alır. Tüm tablo adlarının önünde "TestData" bulunur.