再次重用 Deallocated Cursor 进行删除

Posted

技术标签:

【中文标题】再次重用 Deallocated Cursor 进行删除【英文标题】:Reusing Deallocated Cursor again for deletion 【发布时间】:2013-10-13 09:48:26 【问题描述】:

我已经声明了一个游标,它可以获取我在特定月份创建的所有票证 ID,并且我正在使用它进行插入。

一旦插入成功,我将释放光标并提交事务。

-->>现在我想根据成功消息删除记录。比如如果 message = 'Success',则删除。

但问题是我必须传递该票证 ID 才能删除。


声明@Tickets CURSOR 开始交易插入;

    SET @Tickets= CURSOR READ_ONLY FOR SELECT TICKET_ID FROM TICKETMASTER

然后 INSERT 查询我在哪里传递票证 ID 以插入到表中

打开@Tickets 关闭@Tickets 取消@Tickets 设置@message='成功'

提交事务插入;

现在我正在开始另一个删除事务

开始交易删除;

这里我想再次删除我插入的行,只有当@message 成功并且我必须传递 Ticket id 才能删除。

like 从 TICKETMASTER 中删除,其中 TICKET_ID = @tickets

--

我不想再次设置光标来获取票证 ID。想要使用相同的@tickets 光标进行删除,只需再次打开即可。

我已经解除了@tickets 游标的分配,所以我可以通过提供再次使用它吗

打开@tickets 如果(消息='成功') 从 TICKETMASTER 中删除其中 TicketId = @tickets

【问题讨论】:

【参考方案1】:

您可以从 Ticketmaster 中将 ticketid 选择到 #temptable 中,并将其用作两个游标的来源。或者您可以在同一个光标主体内同时执行插入和删除操作。

【讨论】:

以上是关于再次重用 Deallocated Cursor 进行删除的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift之深入解析特殊序列deallocating与deallocated的源码实现

Oracle参数之cursor_sharing

线程 1:EXC_BREAKPOINT CALayer removeAllAnimations 消息发送到 deallocated

MSSQL优化(TUNING&OPTMIZATION&优化)之——计划重用(plan reusing)

-[UIKeyboardLayoutStar release]: message sent to deallocated instance

message sent to deallocated instance 崩溃 解决方案