相关疑难解决方法(0)

如何获取多个列以用于游标循环?

当我尝试在游标循环中运行以下SQL代码段时,

set @cmd = N'exec sp_rename ' + @test + N',' +
           RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''
Run Code Online (Sandbox Code Playgroud)

我收到以下消息,

消息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 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2005

79
推荐指数
1
解决办法
17万
查看次数

为什么在SQL Server中使用游标被认为是不好的做法?

我在SQL 7天后就知道了一些性能原因,但SQL Server 2005中是否仍然存在相同的问题?如果我在存储过程中有一个我想单独操作的结果集,那么游标仍然是一个糟糕的选择吗?如果是这样,为什么?

sql-server sql-server-2005 cursor

58
推荐指数
8
解决办法
6万
查看次数

SQL Server临时表与游标

在SQL Server存储过程中何时使用临时表以及何时使用游标.这是明智的选择吗?

sql stored-procedures temp-tables

21
推荐指数
2
解决办法
3万
查看次数

迭代SQL Server 2008中的行

考虑表SAMPLE:

id       integer
name     nvarchar(10)
Run Code Online (Sandbox Code Playgroud)

有一个存储过程称为myproc.它只需要一个参数(即id)

给定一个名称作为参数,找到所有行name = @nameparameter并将所有这些ID传递给myproc

例如:

sample->
1   mark
2   mark
3   stu
41  mark
Run Code Online (Sandbox Code Playgroud)

mark通过后,1 ,2 and 41将被传递到myproc个别.

即应发生以下情况:

execute myproc 1
execute myproc 2
execute myproc 41
Run Code Online (Sandbox Code Playgroud)

我无法触摸myproc也看不到它的内容.我只需将值传递给它.

sql sql-server-2008

19
推荐指数
2
解决办法
6万
查看次数