首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有更新列名变量的游标

问带有更新列名变量的游标
EN

Stack Overflow用户
提问于 2017-05-17 17:01:55
回答 1查看 2.1K关注 0票数 0

这是我在任何论坛上寻求SQL帮助的第一篇文章。我总是通过搜索找到我需要的答案(通常在这个网站上)。

我有一个带有变量列名的游标和一个包含列名的where子句。

有人能告诉我为什么会有很多行被更新,但是我的数据永远不会改变吗?#WHold是一个临时表,它保存了我需要循环遍历的列名。它还涉及行数据值。我可以使用一个枢轴表,但是我很好奇为什么这个光标不能工作。

如果运行update语句,则行将被更新。

-我的最新报告

代码语言:javascript
复制
UPDATE MT
SET MT.[10004] = MTD.WHoldAmt
FROM dbo.MyData MT 
        INNER JOIN dbo.MyDataDetail MTD
        ON MT.EEID = MTD.EEID AND MTD.WHold = '10004'

--我的光标--

代码语言:javascript
复制
DECLARE @ColumnName VARCHAR(100)
DECLARE @getColumnName CURSOR
DECLARE @MTColumnName VARCHAR(100)

SET @getColumnName = CURSOR FOR
SELECT WHold,'MT.['+WHold+']' FROM #Whold

OPEN @getColumnName
FETCH NEXT FROM @getColumnName INTO @ColumnName,@MTColumnName
WHILE @@FETCH_STATUS = 0

BEGIN
    UPDATE MT
    SET @MTColumnName = MTD.WHoldAmt
    FROM dbo.MyData MT 
    INNER JOIN dbo.MyDataDetail MTD ON MT.EEID = MTD.EEID AND MTD.WHold = @ColumnName
FETCH NEXT
FROM @getColumnName INTO @ColumnName,@MTColumnName

END
CLOSE @getColumnName
DEALLOCATE @getColumnName

(531行)

(第8行受影响)

(2757行)

(1行受影响)

(受影响的2行)

(1行受影响)

(14行受影响)

(461行)

(511行受影响)

(17行受影响)

(受影响的第9行)

(3行受影响)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-17 17:27:26

SQL正在更新@MTColumnName的值,请尝试将查询更改为:

代码语言:javascript
复制
DECLARE @ColumnName VARCHAR(100)
DECLARE @getColumnName CURSOR 
DECLARE @SQLUpdate VARCHAR(max)  -- Variable to hold SQL Command
SET @getColumnName = CURSOR FOR
SELECT WHold  FROM #Whold 

OPEN @getColumnName
FETCH NEXT FROM @getColumnName INTO @ColumnName,@MTColumnName
WHILE @@FETCH_STATUS = 0

BEGIN

    SET @SQLUpdate = 'UPDATE MT SET MT.[' + @ColumnName + '] = MTD.WHoldAmt
    FROM dbo.MyData MT INNER JOIN dbo.MyDataDetail MTD ON MT.EEID = MTD.EEID AND MTD.WHold = ''' + @ColumnName + ''''

    exec @SQLUpdate

FETCH NEXT
FROM @getColumnName INTO @ColumnName,@MTColumnName

END
CLOSE @getColumnName
DEALLOCATE @getColumnName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44030915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档