Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como chamar o procedimento armazenado do Oracle em Python?


Nesta postagem do blog, estou dando um exemplo para chamar o procedimento armazenado do Oracle em Python. O exemplo inclui chamar um procedimento armazenado com parâmetros IN-OUT. Estou usando a biblioteca cx_Oracle callproc função para chamar o procedimento Oracle. Para permitir que você teste este exemplo em seu sistema, também estou fornecendo o código-fonte da tabela do banco de dados Oracle e o procedimento armazenado.

Faça download de tabelas Oracle de origem usado neste exemplo a partir do link a seguir Baixe o script Scott Schema.

Exemplo de procedimento armazenado do Oracle com parâmetros IN-OUT


O procedimento Oracle a seguir usará os dois parâmetros, (1) i_empno como parâmetro IN número do funcionário e (2) o_total_salary como parâmetro OUT para retornar o salário total do funcionário.
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;

Agora vamos chamar este procedimento em Python usando o callproc cx_Oracle função.

Sintaxe do callproc do CX_Oracle

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

Chamar o procedimento armazenado do Oracle em Python com exemplo de parâmetros IN-OUT


O programa Python a seguir chamará o procedimento compute_sal e imprimirá o salário total retornado na tela.
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()

Saída

Total salary for the employee:  7788 is:  3080.0

Veja também:

  • Instale o cx_Oracle para Python no Windows