Foxpro代码转换为基于Set的MySQL查询

时间:2015-12-07 06:24:44

标签: mysql sql visual-foxpro foxpro

尝试将Visual Foxpro代码转换为基于集合的MySQL查询。以下是Foxpro的代码段

lnFound=0
IF LnFound = 0 .and. rcResult = "ALL" AND PcOpOrIp = "OP"
    SELECT PFile
    LcTag  = ORDER()
    SET ORDER TO TAG PtcntlNm
    =SEEK(LcPatientNo)
    SCAN WHILE PtcntlNm = LcPatientNo
        IF GcMResult <= "0"
            GcMResult = "1-7MAT-PTC"
        ENDIF
        IF MONTH(cSRa.Fromdate) = MONTH(pFile.Fromdate) ;
             .AND. pFile.ThruDate >= cSRa.ThruDate
            ** Check From/Thru Date against pFile
            IF (ABS(cSRa.totalchrg) = (pFile.BDeduct+pFile.Deduct+pFile.Coinsur)) .OR. cSRa.Tchrgs = (pFile.BDeduct+pFile.Deduct+pFile.Coinsur) .or. (ABS(cSRa.totalchrg) = pFile.Total .OR. cSRa.Tchrgs = pFile.Total)
                IF lnFound = 0
                    gcRecid = recid
                    gcmResult=rcResult
                ENDIF
                lnFound = lnFound + 1
                gcUNrECID = gcunRecid + IIF(EMPTY(gCUNreCID),Recid,[,]+recid)
            ENDIF
        ENDIF
    ENDSCAN
    SELECT PFile
    SET ORDER TO &LcTag
ENDIF

我有一个名为pfile的表,我试图与另一个名为csra的表连接。这样做的主要目的是根据三个嵌套if语句的条件设置record_id(gcrecid)。设置gcrecid变量后,lnfound变量设置为1,因此从第二次迭代开始,第三个if语句条件为false。

这是我提出的MySQL存储过程,你可以看到我无法以有效的方式完全转换代码。

UPDATE csra AS cs 
  JOIN p051331s AS p ON cs.patientno = p.ptcntlnm 
SET cs.recid = p.recid
  , cs.mcsult = "ALL"
  , cs.lnfound = '"1"'
WHERE cs.provider = '051331' 
  AND cs.lnfound = "0" 
  AND cs.RECID IS NULL
  AND month(cs.fromdate) = month(p.fromdate) 
  AND p.thrudate >= cs.ThruDate
  AND ABS(cs.totalchrg) = (p.bdeduct+p.deduct+p.coinsur) 
   OR cs.tchrgs = (p.bdeduct+p.deduct+p.coinsur) 
   OR ABS(cs.totalchrg) = p.total OR cs.tchrgs = p.total;

在这方面的任何领导都将非常感激,因为我已经在这个过程中工作了几天而没有明显的结果。

1 个答案:

答案 0 :(得分:0)

根据这个部分VFP代码(它使用的变量不清楚),根本没有代码可以转换为基础。对应的mySQL或MS SQL或任何其他SQL系列后端代码只是&#34;没有&#34;。即:这将是等价的:

-- Hello to mySQL or MS SQL

PS:在试用转换为更新代码时,内部加入csra是错误的。它没有加入VFP代码,csra值是常量 - 在字段集上没有关系 - (指向&#34;当前行&#34;仅在csra中的值)。您可能希望将它们作为参数与其余的内存变量一样(从代码中不清楚哪些是内存变量)。