2016-07-28 2 views
0

Я работаю над преобразованием устаревшей системы в веб-приложение с использованием Ruby on Rails и MySQL.Преобразование программы Foxpro в хранимую процедуру MySQL

Есть несколько мест, которые я застрял при преобразовании слоя данных в процедуры 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. В функции поиска он запрашивает таблицу с именем Checks, параметр Lookup основан на SMA.

Пожалуйста, см. Пастебин исходного кода в рассылке, если вам нужно больше проницательности. http://pastebin.com/raw/Hvx3b8zN

Как я могу перейти и преобразовать такие функции в процедуры MySQL?

Edit: Я ищу идеи по этому вопросу от людей, которые уже сделали эти типы преобразований, от процедуры ориентированных языков для установки на основе хранимых процедур, чтобы быть точными.

+1

Глядя на код VFP и что имеется в письменном виде MySQL sprocs Я думаю, что оставить его на уровне данных и делать это в Ruby было бы более легким подходом. В любом случае вам нужно просто идентифицировать и документировать, что делает код VFP, и реплицировать его. –

+1

Забыл упомянуть, что я пытался сделать это в рубине. Проблема в том, что когда мы загружаем данные в рубин, объем памяти высок. – Vizkrig

+3

Нет автоматического конвертера языка или трюка, вы должны написать код в соответствии с потребностями вашего бизнеса с помощью синтаксиса MySQL. –

ответ

1

Обозреватели все в порядке, и я их всех разогнал. Вы должны на самом деле написать код, но это не так сложно, как только вы пойдете.

Первое, что я делаю, чтобы изучить мой код и переписать все простые вещи, как DELETE FOR .... в зачеркните ...

Тогда я смотрю на своих петлях и думать о том, как я могу относиться к эти данные как набор. Много раз SCAN можно записывать как обычный запрос, когда вы используете соответствующие условия JOIN и условия WHERE. Существует множество инструментов запросов, таких как CASE и подзапросы, которые позволяют вам делать многое с очень маленьким кодом. MySQL позволяет использовать временные таблицы, и это может пригодиться. Поиск может часто выполняться с помощью подзапросов.

В некоторых случаях я должен использовать петли FETCH и WHILE, но я избегаю этого как можно больше, потому что он медленный, и SQL установлен на основе.

Просто начать работу на простой вещи, и вы получите повесить его :)

 Смежные вопросы

  • Нет связанных вопросов^_^