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