如何动态使用更新游标

达姆库鲁

我需要按照这个规则对我的数据进行编码:根据当前单词的长度,我更改单词的字母并在同一个表中更新它,我不确定在这种情况下如何使用 UPDATE 游标,我很乐意获取示例。这是我当前的代码:

DECLARE @name varchar(30)       
DECLARE currentCursor  CURSOR for select Lastname from contact;
OPEN  currentCursor
FETCH NEXT FROM currentCursor INTO @name                    
            Declare @Length int =0;     
            Declare @newName varchar(30)
            select @Length =   LEN(@name);  
             --     DECLARE currentCursor2  CURSOR for update
            while @Length >0
                begin
                    set @newName = concat( @newName,  CHAR(CAST(27 * RAND() + 224 AS INT)) )
                    set @Length = @Length -1;                                                           
               end
            --  FETCH NEXT FROM currentCursor2 INTO @newName  
                update contact 
                set LastName = @newName
                where lastname = @name
CLOSE currentCursor;
DEALLOCATE currentCursor
阿什莉·库尔科夫斯基

您遇到的问题与您使用的游标类型无关,主要问题是您使用的游标语法不正确。即使您使用更新游标,您也会遇到同样的问题。

游标的官方文档可以在这里找到:https : //docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-cursor-transact-sql

第一个问题是因为您只执行一次提取,因此需要不断提取直到到达结果集的末尾。

第二个问题是您没有在迭代之间重置新名称

您的 SQL 的更新版本如下

DECLARE @name varchar(30)       
DECLARE currentCursor  CURSOR for select Lastname from contact;
OPEN  currentCursor
FETCH NEXT FROM currentCursor INTO @name   

WHILE @@FETCH_STATUS = 0 -- While the last fetch was successful
BEGIN
    DECLARE @Length int = 0;     
    DECLARE @newName varchar(30) = '' -- reset new name
    SELECT @Length = LEN(@name);  

    WHILE @Length > 0
    BEGIN
        SET @newName = concat( @newName,  CHAR(CAST(27 * RAND() + 224 AS INT)) )
        SET @Length = @Length -1;                                                           
    END

    UPDATE contact 
    SET    LastName = @newName
    WHERE  lastname = @name

    -- Fetch the next row
    FETCH NEXT FROM currentCursor INTO @name   
END
CLOSE currentCursor;
DEALLOCATE currentCursor

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

indexeddb ,如何使用游标更新对象数组

来自分类Dev

如何使用游标的条件进行更新

来自分类Dev

使用动态SQL的游标

来自分类Dev

使用游标更新

来自分类Dev

在游标中使用动态SQL拆分和更新字符串

来自分类Dev

如何使用SVG作为游标

来自分类Dev

如何使用ace多个游标?

来自分类Dev

如何使用游标执行联接?

来自分类Dev

游标与更新

来自分类Dev

使用游标和变量更新表

来自分类Dev

使用游标更新Temp表中的记录

来自分类Dev

在plsql中使用游标更新多个记录

来自分类Dev

如何使用sql游标更新sql server数据库中的数据?

来自分类Dev

如何使用游标根据另一列更新某些列?

来自分类Dev

如何使用动态文件更新Drake目录

来自分类Dev

如何使用JQuery动态更新下拉列表?

来自分类Dev

如何使用UIActionSheet选项更新动态标签?

来自分类Dev

如何将动态游标添加到plsql函数

来自分类Dev

如何在游标中使用线程?

来自分类Dev

如何使用游标样式:ns-resize

来自分类Dev

如何在游标中使用线程?

来自分类Dev

如何关闭for循环中使用的游标

来自分类Dev

如何加快使用游标的查询?

来自分类Dev

如何使用 ios-charts 创建游标

来自分类Dev

Oracle动态调用游标

来自分类Dev

MYSQL中的动态游标

来自分类Dev

Oracle动态游标参数

来自分类Dev

动态SQL游标

来自分类Dev

游标加载了动态SQL