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

Hvordan kalder man Oracle Stored Procedure i Python?

I dette blogindlæg giver jeg et eksempel på at kalde Oracle-lagret procedure i Python. Eksempel omfatter kald af en lagret procedure med IN-OUT parametre. Jeg bruger cx_Oracle library callproc funktion til at kalde Oracle-proceduren. For at lade dig teste dette eksempel i dit system, leverer jeg også kildekoden til Oracle-databasetabellen og den lagrede procedure.

Download Oracle-kildetabeller brugt i dette eksempel fra følgende link Download Scott Schema script.

Oracle Stored Procedure Eksempel med IN-OUT parametre

Den følgende Oracle-procedure tager de to parametre, (1) i_empno som IN-parameter medarbejdernummer og (2) o_total_salary som OUT-parameter for at returnere den samlede løn for medarbejderen.

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 vil vi kalde denne procedure i Python ved hjælp af cx_Oracle callproc funktion.

CX_Oracle callproc-syntaks

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

Call Oracle Stored Procedure i Python med IN-OUT-parametre Eksempel

Det følgende Python-program kalder compute_sal-proceduren og udskriver den returnerede samlede løn 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()

Output

Total salary for the employee:  7788 is:  3080.0

Se også:

  • Installer cx_Oracle til Python på Windows
  1. Forskellige måder at befolke brugerne af MySQL

  2. Brug af strace som et DG40DBC Debugging Tool på Linux

  3. Automatiser sikkerhedskopiering og vedligeholdelsesjob ved hjælp af vedligeholdelsesplan i SQL Server

  4. Find det sidste indeks af en streng i Oracle