sql >> Database >  >> RDS >> Oracle

Hoe Oracle Stored Procedure in Python aan te roepen?

In deze blogpost geef ik een voorbeeld om de opgeslagen procedure van Oracle in Python aan te roepen. Voorbeelden hiervan zijn het aanroepen van een opgeslagen procedure met IN-OUT-parameters. Ik gebruik cx_Oracle bibliotheek callproc functie om de Oracle-procedure aan te roepen. Om u dit voorbeeld in uw systeem te laten testen, geef ik ook de broncode van de Oracle-databasetabel en de opgeslagen procedure.

Download Oracle brontabellen gebruikt in dit voorbeeld via de volgende link Scott Schema-script downloaden.

In Oracle opgeslagen procedurevoorbeeld met IN-OUT-parameters

De volgende Oracle-procedure neemt de twee parameters, (1) i_empno als IN-parameter werknemernummer en (2) o_total_salary als OUT-parameter om het totale salaris van de werknemer te retourneren.

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 zullen we deze procedure in Python aanroepen met de cx_Oracle callproc functie.

CX_Oracle callproc-syntaxis

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

Call Oracle Stored Procedure in Python met IN-OUT Parameters Voorbeeld

Het volgende Python-programma roept de compute_sal-procedure aan en drukt het geretourneerde totale salaris op het scherm af.

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

Uitvoer

Total salary for the employee:  7788 is:  3080.0

Zie ook:

  • Installeer cx_Oracle voor Python op Windows
  1. Ruby/PgSQL-fout bij het starten van Rails:kan een dergelijk bestand niet laden -- pg_ext (LoadError)

  2. FOUT:Fout 1005:Kan tabel niet maken (fout:121)

  3. Access dataverse connector is nu beschikbaar om te testen

  4. Tijdzoneconversie in SQL-query