En esta publicación de blog, doy un ejemplo para llamar al procedimiento almacenado de Oracle en Python. El ejemplo incluye llamar a un procedimiento almacenado con parámetros IN-OUT. Estoy usando cx_Oracle library callproc función para llamar al procedimiento de Oracle. Para permitirle probar este ejemplo en su sistema, también proporciono el código fuente de la tabla de la base de datos de Oracle y el procedimiento almacenado.
Descargar tablas de origen de Oracle utilizado en este ejemplo desde el siguiente enlace Descargar secuencia de comandos Scott Schema.
Ejemplo de procedimiento almacenado de Oracle con parámetros IN-OUT
El siguiente procedimiento de Oracle tomará los dos parámetros, (1) i_empno como parámetro IN número de empleado y (2) o_total_salary como parámetro OUT para devolver el salario total del empleado.
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;
Ahora llamaremos a este procedimiento en Python usando cx_Oracle callproc función.
CX_Oracle callproc Sintaxis
cursor.callproc('procedure_name', [argument_1, argument_2, ...])
Llamar al procedimiento almacenado de Oracle en Python con el ejemplo de parámetros IN-OUT
El siguiente programa de Python llamará al procedimiento compute_sal e imprimirá el salario total devuelto en la pantalla.
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()
Salida
Total salary for the employee: 7788 is: 3080.0
Ver también:
- Instalar cx_Oracle para Python en Windows