Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

procedimento oracle com case Depende do parâmetro

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))

por exemplo:se vgroupid = -1 , então a última condição será (((GROUPID = -1) AND (-1 > -1)) OR (-1 = -1)) ou ((forever_false AND forever_false) OR (forever_true)) ou (-1 = -1) - todos os registros

em vez disso, se vgroupid = 123 última condição será (((GROUPID = 123) AND (123 > -1)) OR (123 = -1)) ou (((GROUPID = 123) and forever_true) OR (forever_false)) ou (GROUPID = 123) - apenas 123 GRUPO