我正在使用 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。
如果您需要更多了解,请参阅讨论中源代码的pastebin。 http://pastebin.com/raw/Hvx3b8zN
如何将这种函数转换为MySQL程序?
编辑: 我正在寻找已经完成这些类型转换的人对此的见解,从面向过程的语言到准确地说基于集合的存储过程。
最佳答案
评论员都很好,我都点了。您必须实际编写代码,但一旦开始编写就不会太难。
我做的第一件事就是检查我的代码,并将所有简单的内容重写,例如 DELETE FOR .... 为 DELETE WHERE...
然后我查看循环并思考如何将这些数据视为一个集合。很多时候,当您使用适当的 JOIN 条件和 WHERE 条件时,SCAN 可以编写为常规查询。有很多查询工具(例如 CASE 和子查询)可以让您用很少的代码完成大量工作。 MySQL 允许使用临时表,这非常有用。查找通常可以通过子查询来完成。
有时,我必须使用 FETCH 和 WHILE 循环,但我会尽可能避免这样做,因为它很慢并且 SQL 是基于设置的。
只要从简单的事情开始,你就会掌握它的窍门:)
关于mysql - 将Foxpro程序转换为MySQL存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38628513/