Trong bài đăng trên blog này, tôi đang đưa ra một ví dụ để gọi thủ tục lưu trữ Oracle bằng Python. Ví dụ bao gồm gọi một thủ tục được lưu trữ với các tham số IN-OUT. Tôi đang sử dụng cx_Oracle library callproc hàm để gọi thủ tục Oracle. Để cho phép bạn kiểm tra ví dụ này trong hệ thống của mình, tôi cũng cung cấp mã nguồn của bảng cơ sở dữ liệu Oracle và quy trình được lưu trữ.
Tải xuống bảng Oracle nguồn được sử dụng trong ví dụ này từ liên kết sau Tải xuống tập lệnh Scott Schema.
Ví dụ về thủ tục lưu trữ của Oracle với các tham số IN-OUT
Thủ tục Oracle sau sẽ lấy hai tham số, (1) i_empno làm số nhân viên tham số IN và (2) o_total_salary làm tham số OUT để trả về tổng tiền lương của nhân viên.
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;
Bây giờ chúng ta sẽ gọi thủ tục này bằng Python bằng cách sử dụng callproc cx_Oracle chức năng.
Cú pháp callproc CX_Oracle
cursor.callproc('procedure_name', [argument_1, argument_2, ...])
Gọi thủ tục lưu trữ Oracle bằng Python với Ví dụ về tham số IN-OUT
Chương trình Python sau sẽ gọi thủ tục compute_sal và sẽ in tổng tiền lương được trả lại trên màn hình.
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()
Đầu ra
Total salary for the employee: 7788 is: 3080.0
Xem thêm:
- Cài đặt cx_Oracle cho Python trên Windows