问题标签 [cursors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3362 浏览

sql - T-SQL 循环创建记录集

我有一些存储过程需要针对数据库的讨厌野兽编写。我需要遍历一个表(应用程序)并使用应用程序表中的 application_id 从其他表中提取值(有些是 aggerate / averages /etc 值)。

到目前为止,我有:

这给了我想要的结果,但我确信有一种更清洁的方法可以做到这一点,而且我今天似乎无法做出精神上的跳跃来正确地做到这一点。有人可以指出一个更好的方法,因为这对我来说真的很难看。

此外,似乎我应该将这些值存储到临时表中,然后返回完整结果,而不是一一运行 SELECT 语句。

任何建议将不胜感激。

谢谢。

0 投票
5 回答
254 浏览

database - 游标与重复代码/逻辑

我听说使用游标不好,因为它们对 DBMS 来说“不自然”,而且它们的性能很差。
但是想象一下以下情况:我有一个存储过程,我需要为来自法国的每个客户调用这个存储过程(例如)。我有几个选项,例如使用游标,在一个查询中编写所有内容,并从客户端应用程序为每个客户调用存储过程。
如果我在一个查询中编写所有内容 - 它很可能会从已经存在的存储过程中复制代码/逻辑/整个查询。对我来说,这看起来像是一种“臭名昭著的方法”(如果您阅读了“重构”一书)。逻辑不再封装在一个地方。

你怎么看?

PS。欢迎提供任何描述游标为何不好或不坏的文档的链接。

0 投票
1 回答
10866 浏览

oracle - 在 sys_refcursor 中使用 oracle 游标

我有一个 PL/SQL 包,它根据您传递的 id 返回一个 sys_refcursor。我想遍历一些 id 并创建一个新的 ref 游标,其中包含为每个 id 重复的原始结果集中的一列。(类似于交叉表。)PL/SQL 块的一个非常简化的版本如下所示:

我想如果我有这样的东西

工作,我可以从那里拿走它......有什么想法吗?或者也许澄清我应该问的问题。

0 投票
1 回答
223 浏览

user-interface - 各种 Tk 游标是什么意思?

我的 Google-fu 让我失望了。请考虑以下几点: http ://tcl.activestate.com:8000/man/tcl8.4/TkCmd/cursors.htm

一些我很容易理解的光标,“watch”告诉用户等待,“left_ptr”表示我可以选择光标下的东西,“hand2”似乎是“你正在拖动东西”光标。

其他人的约定是什么?有参考吗?

具体来说,我正在寻找一个光标,当它悬停在 DragDrop 源上时,它会显示“您可以从这里拖动”。我一直在使用“hand1”,但这是惯例吗?

0 投票
6 回答
1245 浏览

sql - SQL 用户定义函数与存储过程分支

我目前正在开发一个遗留应用程序,并继承了一些可疑的 SQL。该项目从未投入生产,但现在正在进行中。在初步测试期间,我发现了一个错误。应用程序调用一个存储过程,该存储过程调用许多其他存储过程、创建游标、循环游标以及许多其他事情。FML。

目前应用程序的设计方式是调用存储过程,然后使用一组新数据重新加载 UI。当然我们要展示的数据还在SQL server端处理,所以展示的时候UI结果是不完整的。为了解决这个问题,我在加载 UI 之前让线程休眠了 30 秒。这是一个可怕的 hack,我想在 SQL 方面正确解决这个问题。

我的问题是......是否值得将分支存储过程转换为函数?这会使主线存储过程在处理之前等待返回值吗?

这是存储过程:

为了避免在调用 .NET 应用程序 UI 中显示不完整的结果集,在完成分支调用中的游标之前,是否值得将这些存储过程转换为具有返回值的函数?这会强制 SQL 在完成对 [ALLOCATED_BUDGET] 存储过程的主调用之前等待吗?

  • 存储过程中的最后一个 SQL 语句调用将状态设置为“已分配”。这发生在先前调用中的游标完成处理之前。将这些调用变成函数调用会影响存储过程如何将焦点返回给应用程序吗?

非常感谢任何反馈。我觉得我在使用 SQL 函数方面是正确的,但不是 100% 肯定。

** 附加信息:

  1. 执行代码在连接字符串中使用 [async=true]
  2. 执行代码使用 [SqlCommand].[ExecuteNonQuery] 方法
0 投票
1 回答
2474 浏览

asp.net - 如何为 ASP.NET 控件添加自定义光标?

如何将自定义鼠标光标(例如 C:\Windows\Cursors 目录中的光标)添加到 ASP.NET 用户控件上?

非常感谢,

达特巴约...

0 投票
5 回答
11295 浏览

sql - 动态创建 SQL UPDATE 语句

我正在更新多个表中的数据。目前我有一个表,它有一个字段“sources”,它只是包含字段“itemid”的所有表的列表。我还有一个包含 2 个字段的表,“itemid”和“olditemid”。在 TSQL 中,我想遍历源并动态创建更新语句。这是我试图做的,但我在更新语句中收到一些错误,即我的变量未声明。我不确定这是否接近我应该这样做的正确方式。想法?

0 投票
4 回答
677 浏览

sql - 避免 SQL Server 中的数据库游标

我有一点困惑(至少对我来说),我希望这主要是因为我还不是宇宙的 SQL 大师。基本上我有三个表:

表 A、表 B 和表 C。

表 C 对表 B 有一个 FK(外键),表 B 对表 A 有一个 FK。(每个都是多对一)

我需要从表 A 中删除一个条目,当然也需要从表 B 和 C 中删除所有相应的条目。过去我使用光标来执行此操作,选择表 B 中的所有条目并循环遍历每个条目以删除所有它们在表 C 中的相应条目。现在这可以正常工作 - 并且一直工作正常,但我怀疑/希望有更好的方法可以在不使用游标的情况下实现此效果。所以这就是我的问题 - 我如何在不使用光标的情况下做到这一点,或者可以做到吗?

(如果我不清楚,请告诉我 - 我会尝试解决这个问题)。

0 投票
3 回答
903 浏览

database - 显式打开和关闭游标

我一直在阅读数据库游标,并且我看到的每一位示例代码都明确地打开和关闭了游标。我只用过几次,我从来没有这样做过。谁能告诉我为什么有必要这样做?我知道如果你不关闭游标,你可能会造成内存泄漏,但我从来没有打开过一个。

谢谢

0 投票
1 回答
4904 浏览

database - 数据库游标是否会拾取对基础数据的更改?

关于游标(特别是 Oracle 游标)的快速问题。

假设我有一个名为“my_table”的表,它有两列,一个 ID 和一个名称。有数百万行,但名称列始终是字符串“test”。

然后我运行这个 PL/SQL 脚本:

如果我在运行时运行此 SQL:

PL/SQL 块中的光标会拾取该更改并打印出“错误错误错误”并退出吗?或者它根本不会接受更改......或者它甚至会允许更新到 my_table?

谢谢!