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