Ciao a tutti,
ho iniziato da poco a studiare le stored procedure, e sto cercando di realizzarne una semplice per Oracle che mi consenta di fare quanto segue.
La stored procedure prende in input una serie di parametri e in base ad essi esegue una select che differisce di caso in caso solo nella clausola WHERE.
Quindi in altre parole, prendo l'input, se si verifica la condizione A, allora nella condizione WHERE ho id = 1; se si verifica la condizione B ho id = 2, ecc.
Ho provato a buttare giù qualcosa da solo ma ci sono ancora dei dubbi che mi rimangono:
codice:
CREATE OR REPLACE PROCEDURE myProcedure(
cursorParam OUT SYS_REFCURSOR,
a IN VARCHAR2,
b IN VARCHAR2,
flag IN VARCHAR2)
IS
CURSOR c1(id_p IN NUMBER)
IS
SELECT A, B, C, D
FROM MY_TABLE
WHERE ID = id_p;
BEGIN
IF a = 22 AND b != 'D' AND flag = 'P'
THEN
OPEN c1(2);
END IF;
END;
/
Vorrei ritornare un cursore al programma Java che chiamerà la Stored Procedure, con il record ricercato, ma se dichiaro il cursore così, non ci riesco.
Riesco a ritornare il cursore con i dati solo se lo chiamo cursorParam, che però essendo già usato mi manda in errore la dichiarazione del cursor che ho dovuto chiamare c1.
Il motivo per cui sono arrivato a dichiarare il cursor in questo modo è perché mi serve una select parametrica.
Suggerimenti?