- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试查看是否可以在游标循环中执行更新,并且此更新的数据在循环中的第二次迭代期间得到反射(reflect)。
DECLARE cur CURSOR
FOR SELECT [Product], [Customer], [Date], [Event] FROM MyTable
WHERE [Event] IS NULL
OPEN cur
FETCH NEXT INTO @Product, @Customer, @Date, @Event
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT * FROM MyTable WHERE [Event] = 'No Event' AND [Date] < @DATE
-- Now I update my Event value to 'No Event' for records whose date is less than @Date
UPDATE MyTable SET [Event] = 'No Event' WHERE [Product] = @Product AND [Customer] = @Customer AND [Date] < @DATE
FETCH NEXT INTO @Product, @Customer, @Date, @Event
END
CLOSE cur
DEALLOCATE cur
最佳答案
首先你不应该在这里需要一个游标。类似以下内容将具有相同的语义(从所有 Event
都是 NULL
的起始位置开始)并且效率更高。
WITH T
AS (SELECT [Event],
RANK() OVER (PARTITION BY [Product], [Customer]
ORDER BY [Date] DESC) AS Rnk
FROM MyTable)
UPDATE T
SET [Event] = 'No Event'
WHERE Rnk > 1
COMMIT
陈述。但是,如果您不在更大的事务中运行它,
UPDATE
无论如何,语句将自动提交。
DYNAMIC
光标
Defines a cursor that reflects all data changes made to the rows in its result set as you scroll around the cursor. The data values, order, and membership of the rows can change on each fetch.
ORDER BY
不确定行的处理顺序以及您是否会看到可见的结果。我添加了一个
ORDER BY
以及支持此操作的索引以允许使用动态游标。
UPDATE
在游标循环内,所有三行都被提取。
CREATE TABLE MyTable
(
[Product] INT,
[Customer] INT,
[Date] DATETIME,
[Event] VARCHAR(10) NULL,
PRIMARY KEY ([Date], [Product], [Customer])
)
INSERT INTO MyTable
VALUES (1,1,'20081201',NULL),
(1,1,'20081202',NULL),
(1,1,'20081203',NULL)
DECLARE @Product INT,
@Customer INT,
@Date DATETIME,
@Event VARCHAR(10)
DECLARE cur CURSOR DYNAMIC TYPE_WARNING FOR
SELECT [Product],
[Customer],
[Date],
[Event]
FROM MyTable
WHERE [Event] IS NULL
ORDER BY [Date] DESC
OPEN cur
FETCH NEXT FROM cur INTO @Product, @Customer, @Date, @Event
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Product,
@Customer,
@Date,
@Event
-- Now I update my Event value to 'No Event' for records whose date is less than @Date
UPDATE MyTable
SET [Event] = 'No Event'
WHERE [Product] = @Product
AND [Customer] = @Customer
AND [Date] < @Date
FETCH NEXT FROM cur INTO @Product, @Customer, @Date, @Event
END
CLOSE cur
DEALLOCATE cur
DROP TABLE MyTable
关于sql-server - 如何在 CURSOR 循环内提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884248/
我使用 Apache DBCP 来获取连接池,我每次都使用 PoolingDataSource 来获取连接。当我向数据库中插入一个对象时,它工作得很好,但是当我尝试从数据库中选择一个元素时,就会出现问
术语“幽灵光标”有点令人困惑;我的意思是鼠标光标不是由用户控制的,而是由程序创建并完全控制的。 这意味着屏幕上现在有 2 个光标,而不是一个。 屏幕上是否有超过 1 个光标的概念?如果是,有什么方法/
我在关闭 SQLite 类中的 Cursor 时遇到问题。当我在finally block (在DBHelper中)中关闭游标和SQLiteDatabase时,我无法读取其他类中的数据(无法重新打开关
我想连接两个游标,连接后第二个游标的内容也出现在第一个游标中。 正是我的代码, public final Uri AllImage_URI_Int = MediaStore.Images.Media.
.Net 中的 Cursor.Current 和 this.Cursor(this 是 WinForm)之间有区别吗?我一直使用 this.Cursor 并且运气很好,但我最近开始使用 CodeRus
我在 R Studio 中使用 Cobalt 编辑器主题,我通过更改相应的 .cache.css 文件对其进行了微调。背景颜色是深色的(我的选择),但文本光标(鼠标指针)也是深色的,所以很难看清。我在
我做了以下事情: import MySQLdb as mdb con = mdb.connect(hostname, username, password, dbname) cur = con.cur
当我通过 psql 客户端运行此 SQL 查询时,它会运行几秒钟(~90 秒,这是正常的,因为它是一个巨大的表)并返回,然后我可以检查我的行是否已成功插入。 SELECT merge_data('89
我是用pymongo来查询一个地区的所有元素(其实是在一张 map 上查询一个地区的所有 field )。我之前使用 db.command(SON()) 在球形区域中搜索,它可以返回一个字典,并且在字
intellij 调试:运行到光标处,忽略光标前的所有断点。有办法吗?假设光标前有很多断点,不方便一一禁用。 Line10 Line500 <-- cursor 最佳答案 Force Run
看看这两个 python 代码片段, conn = MySQLdb.connect(c['host'], c['user'], c['password'], c['db']) cur = conn.c
我有 2 个来自 SQLite 数据库中不同表的游标。我正在尝试将来自两个游标的数据放入一个 ListView 但每个游标的数据格式不同。 我考虑的是使用 MergeCursor 来组合两个游
许多 RDBMS 支持某种“CURSOR”类型。这些类型在从存储过程返回时最有用。 Oracle 中的示例: TYPE t_cursor_type IS REF CURSOR; CREATE PROC
我的应用程序结合了 Swing 和 JavaFX。我希望所有组件都使用相同的光标。 从 AWT 游标创建 JavaFX 游标的最佳方法是什么? 编辑:有一个名为 javafx.embed.swing.
我在这里遇到问题: conn = psycopg2.connect(conn_string) cursor = conn.cursor() sql = """ SELECT DISTINCT
我想检索我的 Sqlite3 数据库的前 100 行: connection = sqlite3.connect('aktua.db') cursor = connection.cursor() pr
我目前正在使用 libclang 和 C++ 编写一个简单的克隆检测器。 程序使用结构存储游标,包含指向翻译单元的指针和通过调用 clang_getCursorLocation(cursor) 获得的
我有一个 Observable返回单个 Cursor实例(Observable)。我正在尝试利用 ContentObservable.fromCursor获取 onNext 中每个游标的行回调。 我想
许多 RDBMS 支持某种“CURSOR”类型。这些类型在从存储过程返回时最有用。 Oracle 中的示例: TYPE t_cursor_type IS REF CURSOR; CREATE PROC
我正在为可视化工具编写拖动系统。单击并拖动时,它会移动您在窗口中看到的内容。当鼠标碰到面板的边缘时,我开始重新定位光标,使其永远不会离开框。如果光标在框内,它会跟踪光标所在的虚拟位置。这部分代码工作正
我是一名优秀的程序员,十分优秀!