java.sql.SQLSyntaxErrorException:ORA-01797:此运算符后面必须跟任意或全部

java.sql.SQLSyntaxErrorException:ORA-01797:此运算符后面必须跟任意或全部,java,sql,database,eclipse,runtime,Java,Sql,Database,Eclipse,Runtime,我的问题是 sql = "SELECT pmmr.REQUEST_NO , pmel.event_datetime Event_Datetime,Pmmr.Form_No Form_No, nvl(Pmf.Form_Name, Pmmr.Form_No) formName, pmmr.MRN, nvl (p.FIRST_NAME || DECODE(p.FAMILY_NAME, NULL, '', ' ' || p.FAMILY_NAME),pmmr.MRN

我的问题是

            sql = "SELECT pmmr.REQUEST_NO ,  pmel.event_datetime Event_Datetime,Pmmr.Form_No Form_No, nvl(Pmf.Form_Name, Pmmr.Form_No) formName, pmmr.MRN, nvl  (p.FIRST_NAME || DECODE(p.FAMILY_NAME, NULL, '', ' ' || p.FAMILY_NAME),pmmr.MRN)  PATIENT_NAME,pmmr.ASSIGNED_TO,"
                    +"            pmmr.DRUG_GENERIC_NAME,pmmr.LAST_STATUS, nvl(initcap(( hr1.FIRST_NAME || ' ' ||  hr1.LAST_NAME)),pmmr.LAST_PERFORMER_ID) LastActionBy,"
                    +"            nvl(hr2.DEPARTMENT || ' - ' || hr2.SECTION_NAME,'') ORGANIZATION_UNIT, nvl(initcap(( hr2.FIRST_NAME || ' ' || hr2.LAST_NAME)),pmmr.REQUESTER_ID) RequesterName, pmmr.REQUEST_DATE,"
                    +"            pmmr.item_cost"
                    +"            FROM PHRM_MFRP_MEDICATION_REQUEST pmmr"
                    +"            join PHRM_MFRP_EVENT_LOG pmel on pmmr.REQUEST_NO = pmel.REQUEST_NO"
                    +"            left outer join Hr_Employee hr1 on Pmmr.Last_Performer_Id = Hr1.Employee_Number"
                    +"            left outer join Hr_Employee hr2 on Pmmr.Requester_Id = Hr2.Employee_Number"
                    +"            left outer join EAPPTMT.PATIENT p on Pmmr.Mrn = P.Mrn"
                    +"            left outer join Phrm_Mfrp_Form pmf on Pmmr.Form_No = Pmf.Form_No";
            
        if (status.equals("Pending")){
} 
else if(status.equals("Approved")){
                sql += " WHERE  pmmr.BRANCH_ID = ?  AND pmel.EVENT_STATUS IN ('Pharmacy Director Approved')"
                        +" and Pmmr.Form_No = 1";
                sql +=" and pmel.event_datetime >= (?,'dd/MM/yyyy') and pmel.event_datetime <=   (?,'dd/MM/yyyy')";     
                sql+=" order by LAST_STATUS, EVENT_DATETIME DESC ";
                
            } else if(status.equals("Disapproved")){
                sql += " WHERE  pmmr.BRANCH_ID = ? AND pmel.EVENT_STATUS IN ('Pharmacy Director Disapproved')"
                        + "and Pmmr.Form_No = 1";
                sql +=" and pmel.event_datetime >= (?,'dd/MM/yyyy') and pmel.event_datetime <=   (?,'dd/MM/yyyy')";     
                sql+=" order by LAST_STATUS, EVENT_DATETIME DESC ";}
            stmt = Con.prepareStatement(sql);           
            stmt.setString(2, startDate);
            stmt.setString(3, endDate);
            //tmt.setString(3, status);
            stmt.setInt(1, branchId);
            rs = stmt.executeQuery();
我得到错误java.sql.SQLSyntaxErrorException:ORA-01797:无论何时运行该运算符,它后面都必须跟有ANY或ALL


这是什么意思?我如何修复它?

您的代码非常混乱,应该清理。当你在这里提问时,你通常应该创建一个能突出具体问题的模型,而不是把你的整个代码库粘贴在这里,让我们找到你的bug

不管怎样,自从我对此感兴趣以来,我花了一点时间在谷歌上搜索,发现你的问题已经得到了回答

它说ORA-01797与缺少TOU date常量的查询有关

通过查看您的代码,我可以看到它缺失的几个地方,如下所示:

sql +=" and pmel.event_datetime >= /*to_date missing here!*/ (?,'dd/MM/yyyy') and
pmel.event_datetime <=  /*to_date missing here!*/ (?,'dd/MM/yyyy')";

试着修复它,然后它就会工作。希望它能帮助您

由于格式错误,您的代码无法读取。