如何将 Visual-Foxpro 转换为 Oracle

问题描述 投票:0回答:1

如何将此 Visual-Foxpro 代码转换为 Oracle SQL?

PUBLIC CO
co=0
SELECT 1
USE fxt
INDEX ON act TO aa
SELECT 2
USE bl_sum
INDEX ON act TO bb
SELECT 2
GO TOP
DO WHILE NOT eof ()
STORE act To aci
SELECT 1
GO top
fatcost=0
DO WHILE NOT eof() IF fxt->act=ac1 then fatcost=fatcost+fxt->cost
ENDIF
SELECT 1
skip
ENDDO
SELECT 2
REPLACE Scost WITH fatcost
SKIP
enddo
oracle visual-foxpro
1个回答
1
投票

哇...旧代码,但是还可以。您正在做的事情似乎是从 fxt 表中获取 bl_sum 表中每个“acl”值的所有成本总和,并将该总计存储在 bl_sum“scost”列中。

这将是一个相关更新,看起来像......

UPDATE bl_sum bl
   SET bl.Scost = ( select SUM( f.cost )
                       from fxt f
                       where bl.acl = f.act )

看 = 的右侧是一个简单的选择查询,从 fxt 表(别名 f)中获取“cost”列的总和,其中的行为与 bl_sum 表(别名 bl)中的 acl 相同.

所以,从 VFP 来看是这样的。对于 BL_Sum 表的 do while 循环中的每个外部记录,您将从 fxt 获取每个记录并获取成本总和。完成后,您将该总数放回 bl_sum 表并移至下一个 bl_sum 记录。

反馈

@oldarf,这就是编写查询的重点。这个单个查询可以完成您的代码所做的一切。我从 20 世纪 80 年代的 FoxBASE 开始一直使用 Fox 数据库进行编写,一直到 VFP9 的生命周期产品。所以我懂这种语言。我还了解 SQL 和查询。否则,您将必须执行整个存储过程。学习更有效的方法也会帮助你成长。如果您在转换此代码和其他 FoxPro / Visual FoxPro 代码方面需要帮助,我可以提供帮助,但会通过其他聊天方式来完成,或者您向我提供一封电子邮件以便回复您。

© www.soinside.com 2019 - 2024. All rights reserved.