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

Ngữ nghĩa của các thủ tục / hàm được lưu trữ Oracle trong ngữ cảnh giao dịch

Bạn có thể sử dụng RESTRICT_REFERENCES để chỉ ra rằng một hàm sẽ không đọc / ghi gói hoặc trạng thái cơ sở dữ liệu.

CREATE PACKAGE t_pkg AS
   FUNCTION showup (msg VARCHAR2) RETURN VARCHAR2;
   PRAGMA RESTRICT_REFERENCES(showup, WNDS, RNDS);
END t_pkg;
/
-- create the package body
CREATE OR REPLACE PACKAGE BODY t_pkg AS
   FUNCTION showup (msg VARCHAR2) RETURN VARCHAR2 IS
    v_val varchar2(1);
   BEGIN
      select dummy into v_val from dual;
      RETURN v_val;
   END;
END t_pkg;
/

Đã từng có trường hợp SQL không cho phép bạn gọi một hàm trừ khi nó đưa ra lời hứa như vậy, nhưng hạn chế đó đã bị loại bỏ.

Tôi muốn biến nó thành một công cụ phân biệt giữa một thủ tục và một hàm. Cần lưu ý rằng nếu một hàm PL / SQL tạo ra ngoại lệ NO_DATA_FOUND, thì một câu lệnh SQL đang gọi sẽ không bị lỗi (vì không tìm thấy dữ liệu nào không phải là lỗi SQL). Vì vậy, tôi thích sử dụng các thủ tục trừ khi đối tượng được thiết kế đặc biệt để được gọi từ SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle sử dụng hoặc bỏ qua cột được lập chỉ mục tùy thuộc vào định dạng của to_date (nghĩa đen)

  2. Cách xuất dữ liệu thành tệp CSV trong Oracle bằng quy trình PL SQL

  3. Chèn giá trị mặc định khi chèn null

  4. Làm cách nào để chạy các hàm dbms_crypto trong Oracle với tư cách người dùng thông thường?

  5. Từng bước cài đặt R12.2.6 EBS trên Virtual Box