Sql server TSQL更改游标定义

Sql server TSQL更改游标定义,sql-server,tsql,cursor,Sql Server,Tsql,Cursor,我用的是光标 DECLARE @column1 NVARCHAR(MAX); DECLARE cursor_name CURSOR FOR SELECT c1 FROM table_name; OPEN cursor_name; FETCH cursor_name INTO @column1; WHILE @@FETCH_STATUS = 0 BEGIN FETCH cursor_name INTO @column1; END CLOSE cursor_na

我用的是光标

DECLARE @column1 NVARCHAR(MAX);

DECLARE cursor_name CURSOR FOR
    SELECT c1
    FROM   table_name;

OPEN cursor_name;
FETCH cursor_name INTO @column1;

WHILE @@FETCH_STATUS = 0
BEGIN

    FETCH cursor_name INTO @column1;
END

CLOSE cursor_name;
DEALLOCATE cursor_name;
现在我的问题是,我可以在使用光标后更改光标的定义吗?我的意思类似于:

DECLARE cursor_name CURSOR FOR
    SELECT c2
    FROM   table_name2;
使用相同的游标名称
游标名称
,但定义已更改。 如果这是可能的,如何做到这一点


谢谢。

避免讨论光标是否必要,从纯技术角度来看,一旦光标关闭并解除分配,您可以再次自由地重新使用该名称。

,但必须在您解除分配之后。你有没有试过这个但不起作用

你可能还想看看你是否真的需要一个光标。它们损害了性能,使用它们的SQL通常可以在没有它们的情况下重写

看一看如何做。他们使用不太常见的DECLARE/SET语法来声明游标(至少在我的世界中是不常见的)。以下是他们提供的示例:

USE pubs
GO
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM titles

DEALLOCATE @MyCursor

SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM sales
GO