将Foxpro程序转换为MySQL存储过程

时间:2016-07-28 06:22:41

标签: mysql stored-procedures visual-foxpro foxpro set-based

我正在使用Ruby on Rails和MySQL将遗留系统转换为Web应用程序。

在将数据层转换为MySQL程序时,我很少有地方可以使用。

给出一个场景;

FUNCTION first_function
SELE Table1
REPL Table1.SmaCode WITH SMA(code,HcPc,FromDate)
ENDFUNC

FUNCTION SMA
... Lot of conditions ...
Lookup(param1,param2) * Parameters are based on the conditions above
.. Lot more conditions ....
ENDFUNC

FUNCTION Lookup
temp = Output of select on Check table 
return temp
ENDFUNC

这里SMA是另一个具有如此多条件的函数,它还调用了另一个函数Lookup。在Lookup函数中,它查询名为Checks的表,Lookup的参数基于SMA。

如果您需要更多见解,请参阅disucssion中的源代码的pastebin。 http://pastebin.com/raw/Hvx3b8zN

如何将此类函数转换为MySQL过程?

修改 我正在寻找那些已经完成这些类型转换的人的见解,从面向过程的语言到基于集合的存储过程都是准确的。

1 个答案:

答案 0 :(得分:1)

评论员没事,我把它们全都提升了。你必须实际编写代码,但一旦你开始它就不会太难。

我要做的第一件事就是检查我的代码并将所有直接的东西重写为DELETE FOR ....进入DELETE WHERE ......

然后我查看我的循环并思考如何将数据视为一组。很多时候,当您使用适当的JOIN条件和WHERE条件时,SCAN可以作为常规查询编写。有很多查询工具,如CASE和子查询,可以让你用很少的代码完成很多工作。 MySQL允许临时表,它可以非常有用。查询通常可以使用子查询完成。

有时,我必须使用FETCH和WHILE循环,但我尽可能地避免使用它,因为它很慢并且SQL是基于设置的。

开始使用简单的东西,你就可以了解它:)