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

Gọi một thủ tục được lưu trữ với một thủ tục khác trong Oracle

Các thủ tục được lưu trữ của bạn hoạt động như được mã hóa. Vấn đề là với dòng cuối cùng, nó không thể gọi một trong các thủ tục đã lưu trữ của bạn.

Ba lựa chọn trong SQL * Plus là:call , exec và một khối PL / SQL ẩn danh.

call dường như là một từ khóa SQL và được ghi lại trong Tham chiếu SQL. http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_4008.htm#BABDEHHG Sơ đồ cú pháp cho biết rằng dấu ngoặc đơn là bắt buộc, ngay cả khi không có đối số nào được chuyển vào quy trình gọi.

CALL test_sp_1();

Khối PL / SQL ẩn danh là PL / SQL không nằm trong một thủ tục, hàm, trình kích hoạt đã đặt tên, v.v. Nó có thể được sử dụng để gọi thủ tục của bạn.

BEGIN
    test_sp_1;
END;
/

Exec là một lệnh SQL * Plus là một phím tắt cho khối ẩn danh ở trên. EXEC <procedure_name> sẽ được chuyển đến máy chủ DB dưới dạng BEGIN <procedure_name>; END;

Ví dụ đầy đủ:

SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE test_sp 
  2  AS 
  3  BEGIN 
  4      DBMS_OUTPUT.PUT_LINE('Test works'); 
  5  END;
  6  /

Procedure created.

SQL> CREATE OR REPLACE PROCEDURE test_sp_1 
  2  AS
  3  BEGIN
  4      DBMS_OUTPUT.PUT_LINE('Testing'); 
  5      test_sp; 
  6  END;
  7  /

Procedure created.

SQL> CALL test_sp_1();
Testing
Test works

Call completed.

SQL> exec test_sp_1
Testing
Test works

PL/SQL procedure successfully completed.

SQL> begin
  2      test_sp_1;
  3  end;
  4  /
Testing
Test works

PL/SQL procedure successfully completed.

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. Nhóm các bản ghi từng giờ hoặc từng ngày và lấp đầy khoảng trống bằng 0 hoặc rỗng

  2. Nhận danh sách tất cả các hàm và thủ tục trong cơ sở dữ liệu Oracle

  3. Cách tốt nhất để xác định phiên bản ứng dụng khách Oracle mà tôi đang chạy là gì?

  4. Ngày trung bình trong sql oracle

  5. Sự khác biệt chính giữa Varchar2 và char là gì