WedX - журнал о программировании и компьютерных науках

Преобразование программы Foxpro в хранимую процедуру MySQL

Я занимаюсь преобразованием устаревшей системы в веб-приложение с использованием Ruby on Rails и 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, параметр поиска основан на SMA.

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

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

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


  • Глядя на код VFP и то, что доступно для написания sprocs MySQL, я думаю, что оставить его на уровне данных и сделать это на Ruby было бы более простым подходом. В любом случае вам нужно просто определить и задокументировать, что делает код VFP, и воспроизвести его. 28.07.2016
  • Забыл упомянуть, что я пытался сделать это на рубине. Проблема в том, что когда мы загружаем данные в ruby, объем памяти велик. 28.07.2016
  • Здесь нет автоматического конвертера языков или трюков, вы должны написать код в соответствии с потребностями вашего бизнеса, используя синтаксис MySQL. 28.07.2016
  • @IvanCachicatari Моя цель состояла в том, чтобы собрать некоторые идеи по преобразованию процедурного языка в запрос MySQL на основе наборов, это не означало, что я запрашиваю точный синтаксис MySQL, я извиняюсь, если мой вопрос вызвал путаницу. 29.07.2016
  • Команды @Vizkrig Foxpro основаны на текущих записях и открытых таблицах, я разработчик старой школы, я тоже использовал vfp, трудно перевести код vfp без образцов данных или образцов до и после, некоторые устаревшие процедуры теперь можно решить с помощью одной строки в зависимости от языка. 29.07.2016

Ответы:


1

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

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

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

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

Просто начните с простых вещей и у вас все получится :)

16.08.2016
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]