Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment appeler une procédure stockée Oracle en Python ?

Dans cet article de blog, je donne un exemple pour appeler une procédure stockée Oracle en Python. L'exemple inclut l'appel d'une procédure stockée avec des paramètres IN-OUT. J'utilise la bibliothèque cx_Oracle callproc fonction pour appeler la procédure Oracle. Pour vous permettre de tester cet exemple dans votre système, je fournis également le code source de la table de base de données Oracle et la procédure stockée.

Télécharger les tables Oracle source utilisé dans cet exemple à partir du lien suivant Télécharger le script Scott Schema.

Exemple de procédure stockée Oracle avec paramètres IN-OUT

La procédure Oracle suivante prendra les deux paramètres, (1) i_empno comme paramètre IN numéro d'employé et (2) o_total_salary comme paramètre OUT pour renvoyer le salaire total de l'employé.

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;

Nous allons maintenant appeler cette procédure en Python en utilisant le callproc cx_Oracle fonction.

CX_Oracle callproc Syntaxe

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

Appelez la procédure stockée Oracle en Python avec un exemple de paramètres IN-OUT

Le programme Python suivant appellera la procédure compute_sal et imprimera le salaire total renvoyé à l'écran.

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()

Sortie

Total salary for the employee:  7788 is:  3080.0

Voir aussi :

  • Installer cx_Oracle pour Python sous Windows