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

ORACLE:Sử dụng CTE (Biểu thức bảng chung) với PL / SQL

Đầu tiên, điều này không liên quan gì đến CTE. Hành vi này sẽ giống với một select * from table truy vấn. Sự khác biệt là với T-SQL, truy vấn đi vào một con trỏ ngầm được trả về cho người gọi. Khi thực thi SP từ Management Studio, điều này rất thuận tiện. Tập kết quả xuất hiện trong cửa sổ dữ liệu như thể chúng ta đã thực hiện truy vấn trực tiếp. Nhưng đây thực sự là hành vi không chuẩn mực. Oracle có hành vi tiêu chuẩn hơn có thể được phát biểu là "tập hợp kết quả của bất kỳ truy vấn nào không được hướng vào con trỏ phải được chuyển hướng đến các biến." Khi được chuyển hướng vào các biến, thì truy vấn chỉ phải trả về một hàng.

Để sao chép hành vi của T-SQL, bạn chỉ cần khai báo và trả về con trỏ một cách rõ ràng. Sau đó, mã gọi tìm nạp từ con trỏ toàn bộ kết quả được đặt nhưng một hàng tại một thời điểm. Bạn không có được sự tiện lợi khi Sql Developer hoặc PL / SQL Developer chuyển hướng tập hợp kết quả đến cửa sổ hiển thị dữ liệu, nhưng bạn không thể có mọi thứ.

Tuy nhiên, vì chúng ta thường không viết SP chỉ để được gọi từ IDE, nên việc làm việc với các con trỏ tường minh của Oracle sẽ dễ dàng hơn các con trỏ ngầm của SQL Server. Chỉ cần google "oracle return ref cursor to caller" để có được rất nhiều tài liệu hay.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL của Oracle - lấy dữ liệu từ tuần trước (Thứ Hai-Thứ Bảy)

  2. Giữ một cơ sở dữ liệu ứng dụng là bất khả tri (ADO.NET so với đóng gói logic DB)

  3. Làm thế nào để tạo hợp nhất hai tập dữ liệu với câu lệnh SQL được chọn (Oracle DBMS)?

  4. Truy vấn Cơ sở dữ liệu Oracle với tên Bảng động

  5. Kết hợp các câu lệnh DDL và DML trong một tập lệnh duy nhất