Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Prozedur mit Fall Es hängt vom Parameter ab

CURSOR c
IS
  SELECT COMPANYID,
         GROUPID,
         PERIODID,
         FN_PPROCESSCURRENT
FROM LIQUIDATIONSDETAILS
   WHERE     PROCESSID = FN_PPROCESSPREVIOUS
         AND (UNCOLLECTED > 0 OR INVOICE = 0)
         AND (((GROUPID = vgroupid) AND (vgroupid > -1)) OR (vgroupid = -1))

zum Beispiel:if vgroupid = -1 , dann ist die letzte Bedingung (((GROUPID = -1) AND (-1 > -1)) OR (-1 = -1)) oder ((forever_false AND forever_false) OR (forever_true)) oder (-1 = -1) - alle Datensätze

stattdessen, wenn vgroupid = 123 letzte Bedingung ist (((GROUPID = 123) AND (123 > -1)) OR (123 = -1)) oder (((GROUPID = 123) and forever_true) OR (forever_false)) oder (GROUPID = 123) - nur 123 GROUPID