当我尝试在游标循环中运行以下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 …我在SQL 7天后就知道了一些性能原因,但SQL Server 2005中是否仍然存在相同的问题?如果我在存储过程中有一个我想单独操作的结果集,那么游标仍然是一个糟糕的选择吗?如果是这样,为什么?
在SQL Server存储过程中何时使用临时表以及何时使用游标.这是明智的选择吗?
考虑表SAMPLE:
id       integer
name     nvarchar(10)
有一个存储过程称为myproc.它只需要一个参数(即id)
给定一个名称作为参数,找到所有行name = @nameparameter并将所有这些ID传递给myproc
例如:
sample->
1   mark
2   mark
3   stu
41  mark
当mark通过后,1 ,2 and 41将被传递到myproc个别.
即应发生以下情况:
execute myproc 1
execute myproc 2
execute myproc 41
我无法触摸myproc也看不到它的内容.我只需将值传递给它.