I det här blogginlägget ger jag ett exempel på hur man kallar Oracle lagrad procedur i Python. Exempel inkluderar anrop av en lagrad procedur med IN-OUT-parametrar. Jag använder cx_Oracle library callproc funktion för att anropa Oracle-proceduren. För att du ska kunna testa detta exempel i ditt system tillhandahåller jag även källkoden för Oracle-databastabellen och den lagrade proceduren.
Ladda ned Oracle-källtabeller används i detta exempel från följande länk Ladda ner Scott Schema script.
Oracle Stored Procedure Exempel med IN-OUT-parametrar
Följande Oracle-procedur tar de två parametrarna, (1) i_empno som IN-parameter anställdsnummer och (2) o_total_salary som OUT-parameter för att returnera den anställdes totala lön.
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 ska vi anropa denna procedur i Python med hjälp av cx_Oracle callproc funktion.
CX_Oracle callproc-syntax
cursor.callproc('procedure_name', [argument_1, argument_2, ...])
Call Oracle Stored Procedure i Python med IN-OUT-parametrar Exempel
Följande Python-program kommer att anropa compute_sal-proceduren och kommer att skriva ut den returnerade totala lönen på skärmen.
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()
Utdata
Total salary for the employee: 7788 is: 3080.0
Se även:
- Installera cx_Oracle för Python på Windows