tipos procedimientos funciones ejemplos developer desde cero bloques oracle plsql

oracle - procedimientos - procedimiento oráculo con caja depende del parámetro



procedimientos y funciones oracle pl/sql (1)

Hola, quiero hacer un procedimiento como el siguiente:

CREATE OR REPLACE PROCEDURE SOL.INSERT_LD_NEXTPROCESS (vgroupid NUMBER) IS VPERIODID VARCHAR2 (10); vPROCSESSID NUMBER; CURSOR c IS SELECT COMPANYID, GROUPID, PERIODID, FN_PPROCESSCURRENT FROM LIQUIDATIONSDETAILS WHERE PROCESSID = FN_PPROCESSPREVIOUS AND (UNCOLLECTED > 0 OR INVOICE = 0)

Quiero agregar un filtro extra que depende del parámetro:

CASE WHEN vgroupid > -1 then AND GROUPID = vgroupid ELSE NULL END ...

así que la causa causa como

WHERE PROCESSID = FN_PPROCESSPREVIOUS AND (UNCOLLECTED > 0 OR INVOICE = 0) AND GROUPID = vgroupid

cuando vgroupid = -1, entonces necesito todos los registros y cuando vgroupid> -1, entonces solo necesito los registros en vgroupid

¿alguna idea?


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 ejemplo: si vgroupid = -1 , entonces la última condición será (((GROUPID = -1) AND (-1 > -1)) OR (-1 = -1)) o ((forever_false AND forever_false) OR (forever_true)) o (-1 = -1) - todos los registros

en cambio, si vgroupid = 123 última condición será (((GROUPID = 123) AND (123 > -1)) OR (123 = -1)) o (((GROUPID = 123) and forever_true) OR (forever_false)) o (GROUPID = 123) - solo 123 GROUPID