我正在使用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过程?
修改 我正在寻找那些已经完成这些类型转换的人的见解,从面向过程的语言到基于集合的存储过程都是准确的。
答案 0 :(得分:1)
评论员没事,我把它们全都提升了。你必须实际编写代码,但一旦你开始它就不会太难。
我要做的第一件事就是检查我的代码并将所有直接的东西重写为DELETE FOR ....进入DELETE WHERE ......
然后我查看我的循环并思考如何将数据视为一组。很多时候,当您使用适当的JOIN条件和WHERE条件时,SCAN可以作为常规查询编写。有很多查询工具,如CASE和子查询,可以让你用很少的代码完成很多工作。 MySQL允许临时表,它可以非常有用。查询通常可以使用子查询完成。
有时,我必须使用FETCH和WHILE循环,但我尽可能地避免使用它,因为它很慢并且SQL是基于设置的。
开始使用简单的东西,你就可以了解它:)