|
|
1
12
根据我对这个问题的另一个回答中的对话,我想我已经找到了一种加快你日常生活的方法。 您有两个嵌套游标:
所以 你的外环只需要得到 全部的 每个产品/仓库组合的发货数量。因此,您可以将外部光标定义更改为:
(然后还将代码末尾的SH中匹配的FETCH更改为match,显然) 这意味着您的外部游标将有更少的行循环通过,而您的内部游标将有大致相同数量的行循环通过。 所以这应该更快。 |
|
|
2
2
您有两种选择,这取决于您真正想要完成的任务的复杂性:
|
|
|
3
1
移除光标并执行批更新。我还没有找到一个不能批量完成的更新。 |
|
4
1
移除游标并重写,作为加入游标查询的更新,如果需要,可以将IFs作为案例。我今天太忙了,没时间为你写更新。。。 |
|
|
5
1
首先,如果必须使用游标,并且要更新内容,则使用FORUPDATE子句声明游标。(请参见下面的示例。请注意,该示例完全不是基于您的代码。) 话虽如此,使用游标以外的东西有很多种方法,通常利用临时表。我会调查这条路线,而不是用光标。
|
|
|
6
1
我可以看出您试图解决的问题相当复杂:
这是一个相当棘手的计算,因为您必须比较不同的行,然后返回并更改一行或两行中的值,以跟踪每个股票交易。 那里 也许 例如,与记录股票交易的同一个表中的股票跟踪不同,您是否可以有一个单独的表,其中包含“Product_id,Depo_id,amount”列,用于一次跟踪每个仓库中每个产品的总金额? 这样的数据库设计更改可能会使事情变得更简单。 或而不是用E_CIKAN来跟踪 ,使用它来跟踪 还有什么 . 并在每行中保留一个E_CIKAN值。所以,无论何时库存进出仓库,都要重新计算E_CIKAN 那时 并将其存储在该事务行中(而不是尝试返回到原始的“库存”行并在那里进行更新)。然后要找出当前的库存,您只需查看该产品/仓库的最新交易即可。 总之,我要说的是,您的计算速度慢且繁琐,因为您以一种奇怪的方式存储数据。从长远来看,更改数据库设计以简化编程可能是值得的。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |