相关疑难解决方法(0)

为什么人们如此讨厌SQL游标?

我可以理解为了避免因为开销和不便而不得不使用光标,但看起来有一些严重的光标 - 恐惧症 - 狂热正在进行,人们将不遗余力地避免使用光标.

例如,有一个问题询问如何使用游标执行明显无关紧要的操作,并使用带有递归自定义函数的公用表表达式(CTE)递归查询提出接受的答案,即使这会将可处理的行数限制为32 (由于sql server中的递归函数调用限制).这让我觉得它是系统寿命的可怕解决方案,更不用说为了避免使用简单的光标而付出的巨大努力.

这种疯狂仇恨的原因是什么?有一些"着名的权威"发布了针对游标的法特瓦吗?一些无法形容的邪恶是否潜伏在游戏的核心,腐蚀了儿童的道德或什么?

维基问题,答案比代表更感兴趣.

相关信息:

SQL Server快进游标

编辑:让我更精确:我理解不应该使用游标而不是正常的关系操作 ; 这是一个明智的选择.我不明白的是,即使游标是一种更简单和/或更有效的解决方案,人们也会不顾一切地避开光标,就像他们有傻瓜一样.困扰我的是非理性的仇恨,而不是明显的技术效率.

sql cursor

127
推荐指数
8
解决办法
10万
查看次数

为MySQL中的查询返回的每一行调用存储过程

我想要一个有效的MySQL存储过程:

foreach id in (SELECT id FROM objects WHERE ... ) CALL testProc(id)

我想我只是希望MySQL回答这个问题,但我不太了解游标:如何为查询返回的每一行执行一次存储过程?

mysql stored-procedures

24
推荐指数
1
解决办法
3万
查看次数

如何使用SQL Server中的Create语句创建临时表?

如何创建临时表与创建普通表类似?

例:

CREATE TABLE table_name 
(
    column1 datatype,
    column2 datatype,
    column3 datatype,
     ....
 );
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures

12
推荐指数
2
解决办法
7万
查看次数

SQL 选择 Id 列表并通过 SP 运行它们

我刚刚使用 Microsoft SQL Server 2008 R2 启动 SQL,我想选择一个 Id 列表并通过存储过程运行每个 Id,但不知道如何执行。

SELECT Id 
FROM UserId 
WHERE ProgramId = @ProgramId
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个名为temp_sp_UpdateIds

通常我可以运行存储过程

EXEC temp_sp_UpdateIds @ProgramId
Run Code Online (Sandbox Code Playgroud)

但我不确定如何使用从 select 语句返回的 Id 列表运行存储过程并将其放在@ProgramId

我需要将 Id 存储在本地表中吗?

谢谢。

sql sql-server-2008-r2

3
推荐指数
1
解决办法
3142
查看次数