In deze blogpost geef ik een voorbeeld om de opgeslagen procedure van Oracle in Python aan te roepen. Voorbeelden hiervan zijn het aanroepen van een opgeslagen procedure met IN-OUT-parameters. Ik gebruik cx_Oracle bibliotheek callproc functie om de Oracle-procedure aan te roepen. Om u dit voorbeeld in uw systeem te laten testen, geef ik ook de broncode van de Oracle-databasetabel en de opgeslagen procedure.
Download Oracle brontabellen gebruikt in dit voorbeeld via de volgende link Scott Schema-script downloaden.
In Oracle opgeslagen procedurevoorbeeld met IN-OUT-parameters
De volgende Oracle-procedure neemt de twee parameters, (1) i_empno als IN-parameter werknemernummer en (2) o_total_salary als OUT-parameter om het totale salaris van de werknemer te retourneren.
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;
Nu zullen we deze procedure in Python aanroepen met de cx_Oracle callproc functie.
CX_Oracle callproc-syntaxis
cursor.callproc('procedure_name', [argument_1, argument_2, ...])
Call Oracle Stored Procedure in Python met IN-OUT Parameters Voorbeeld
Het volgende Python-programma roept de compute_sal-procedure aan en drukt het geretourneerde totale salaris op het scherm af.
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()
Uitvoer
Total salary for the employee: 7788 is: 3080.0
Zie ook:
- Installeer cx_Oracle voor Python op Windows