เมื่อฉันพยายามเรียกใช้ข้อมูลโค้ด SQL ต่อไปนี้ภายในลูปเคอร์เซอร์
set @cmd = N'exec sp_rename ' + @test + N',' +
RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''
ฉันได้รับข้อความต่อไปนี้
ข่าวสารเกี่ยวกับ 15248 ระดับ 11 สถานะ 1 ขั้นตอน sp_rename บรรทัด 213
พารามิเตอร์@objname
ไม่ชัดเจนหรืออ้างว่า@objtype
(COLUMN) ไม่ถูกต้อง
เกิดอะไรขึ้นและฉันจะแก้ไขได้อย่างไร? ฉันลองตัดชื่อคอลัมน์ในวงเล็บ[]
และอัญประกาศคู่""
เหมือนผลการค้นหาบางรายการที่แนะนำ
แก้ไข 1 -
นี่คือสคริปต์ทั้งหมด ฉันจะส่งชื่อตารางไปยัง sp เปลี่ยนชื่อได้อย่างไร ฉันไม่แน่ใจว่าจะทำอย่างไรเนื่องจากชื่อคอลัมน์อยู่ในตารางใดตารางหนึ่ง
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
แก้ไข 2 - สคริปต์ได้รับการออกแบบมาเพื่อเปลี่ยนชื่อคอลัมน์ที่มีชื่อตรงกับรูปแบบในกรณีนี้ด้วยคำนำหน้า "pct" คอลัมน์เกิดขึ้นในตารางต่างๆภายในฐานข้อมูล ชื่อตารางทั้งหมดขึ้นต้นด้วย "TestData"