0

我正在使用 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 程序?

编辑: 我正在寻找已经完成这些类型转换的人对此的见解,从面向过程的语言到确切的基于集合的存储过程。

4

1 回答 1

1

评论员都很好,我都赞成。您必须实际编写代码,但一旦开始就不会太难。

我要做的第一件事是检查我的代码并将所有简单的东西(如 DELETE FOR ....)重写为 DELETE WHERE...

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

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

刚开始做简单的事情,你就会掌握它的窍门:)

于 2016-08-16T15:48:37.307 回答