Oracle
 sql >> Database >  >> RDS >> Oracle

Come chiamare la stored procedure Oracle in Python?

In questo post del blog, fornisco un esempio per chiamare la stored procedure Oracle in Python. L'esempio include la chiamata di una procedura memorizzata con parametri IN-OUT. Sto usando cx_Oracle library callproc funzione per chiamare la procedura Oracle. Per consentirti di testare questo esempio nel tuo sistema, fornisco anche il codice sorgente della tabella del database Oracle e della procedura memorizzata.

Scarica le tabelle Oracle di origine utilizzato in questo esempio dal collegamento seguente Scarica lo script Scott Schema.

Esempio di stored procedure Oracle con parametri IN-OUT

La seguente procedura Oracle prenderà i due parametri, (1) i_empno come parametro IN numero dipendente e (2) o_total_salary come parametro OUT per restituire lo stipendio totale del dipendente.

CREATE OR REPLACE PROCEDURE get_total_sal (i_empno IN emp.empno%TYPE,
o_total_salary OUT NUMBER)
IS
CURSOR c_emp (p_empno emp.empno%TYPE)
IS
SELECT sal, comm
FROM emp
WHERE empno = p_empno;

v_sal NUMBER;
v_comm NUMBER;
BEGIN
OPEN c_emp (i_empno);

FETCH c_emp
INTO v_sal, v_comm;

CLOSE c_emp;

o_total_salary := (v_sal + NVL (v_comm, 0));
END get_total_sal;

Ora chiameremo questa procedura in Python usando il callproc cx_Oracle funzione.

Sintassi callproc CX_Oracle

cursor.callproc('procedure_name', [argument_1, argument_2, ...])

Richiama la stored procedure Oracle in Python con l'esempio di parametri IN-OUT

Il seguente programma Python chiamerà la procedura compute_sal e stamperà sullo schermo lo stipendio totale restituito.

import cx_Oracle

con = cx_Oracle.connect('scott/tiger@localhost/orcl')

cur = con.cursor()
n_empno = 7788
n_total_salary = cur.var(cx_Oracle.NUMBER)
cur.callproc('compute_sal', [n_empno, n_total_salary])

print ("Total salary for the employee: ", n_empno, "is: ", n_total_salary.getvalue())
cur.close()
con.close()

Uscita

Total salary for the employee:  7788 is:  3080.0

Vedi anche:

  • Installa cx_Oracle per Python su Windows