Quando tento executar o seguinte snippet SQL dentro de um loop de cursor,
set @cmd = N'exec sp_rename ' + @test + N',' +
RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''
Eu recebo a seguinte mensagem,
Msg 15248, nível 11, estado 1, procedimento sp_rename, linha 213
O parâmetro@objname
é ambíguo ou o reivindicado@objtype
(COLUMN) está incorreto.
O que está errado e como faço para corrigir isso? Tentei colocar o nome da coluna entre colchetes []
e aspas duplas, ""
como alguns dos resultados da pesquisa sugeridos.
Editar 1 -
Aqui está o roteiro completo. Como passo o nome da tabela para renomear sp? Não tenho certeza de como fazer isso, pois os nomes das colunas estão em uma das muitas tabelas.
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
Editar 2 - O script é projetado para renomear colunas cujos nomes correspondem a um padrão, neste caso com um prefixo "pct". As colunas ocorrem em várias tabelas no banco de dados. Todos os nomes de tabela são prefixados com "TestData".