2016-07-28 8 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을 호출합니다. Lookup 함수에서 Checks라는 테이블을 쿼리하면 Lookup의 매개 변수는 SMA를 기반으로합니다.

통찰력이 더 필요하다면 소스 코드의 pastebin을 보라. http://pastebin.com/raw/Hvx3b8zN

어떻게 이러한 종류의 기능을 MySQL 프로 시저로 변환 할 수 있습니까?

편집 : 이미 정확히하는 기반 저장 프로 시저를 설정하는 절차 지향 언어에서, 변환 이러한 종류의 일을 한 사람들이에 대한 통찰력을 찾고 있어요.

+1

VFP 코드를 보면의 요령 무엇을 볼 수 있습니다를 얻을 수 있습니다 그 데이터 레이어를 떠나 일을 루비에서 더 쉬운 접근 방법이 될 것입니다. 어느 쪽이든 VFP 코드가 수행하는 작업을 식별하고 문서화하고 복제해야합니다. –

+1

루비에서 시도한 것을 잊어 버렸습니다. 문제는 루비에 데이터를로드 할 때 메모리 사용 공간이 많다는 것입니다. – Vizkrig

+3

자동 언어 변환기 또는 트릭이 없으므로 MySQL 구문을 사용하여 비즈니스 요구 사항에 따라 코드를 작성해야합니다. –

답변

1

해설자는 괜찮아요. 나는 그들을 모두 고양 시켰습니다. 실제로 코드를 작성해야하지만 일단 코드를 작성하면 너무 어렵지 않습니다.

내가 할 첫 번째 일은 내 코드를 검사 한 후

내가 내 루프를 보면 WHERE ... DELETE로 .... 삭제 (Delete) 같은 모든 간단한 일을 다시하고 내가 처리 할 수있는 방법에 대해 생각하는 것입니다 그 데이터를 집합으로. 적절한 JOIN 조건과 WHERE 조건을 사용하면 대부분의 경우 SCAN을 일반 쿼리로 작성할 수 있습니다. 매우 적은 코드로 많은 일을 처리 할 수있는 CASE 및 하위 쿼리와 같은 쿼리 도구가 많이 있습니다. MySQL은 임시 테이블을 허용하며 매우 유용 할 수 있습니다. 조회는 종종 하위 쿼리로 수행 할 수 있습니다.

경우에 따라 FETCH 및 WHILE 루프를 사용해야하지만 속도가 느리고 SQL이 기본으로 설정되어 있으므로 최대한 많이 사용하지 않아야합니다.

그냥 쉬운 물건에 시작하고 당신은 내가 생각 MySQL의 sprocs가를 서면으로 그것을 :