Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để gọi thủ tục lưu trữ Oracle trong Python?

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
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Từng bước cài đặt R12.2.6 EBS trên Virtual Box Part -2

  2. Có thể chuyển tên bảng làm tham số trong Oracle không?

  3. Các giá trị lặp lại trong một cột

  4. Phương pháp thu thập:Hàm EXISTS trong cơ sở dữ liệu Oracle

  5. Oracle:Nếu bảng tồn tại