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

Phương pháp thay thế cho các bảng tạm thời toàn cục cho Thủ tục lưu trữ Oracle

Bảng T-SQL Temp về bản chất là cấu trúc bộ nhớ. Chúng cung cấp các lợi ích trong MSSQL mà ít rõ ràng hơn trong Oracle, vì sự khác biệt trong hai kiến ​​trúc RDBMS. Vì vậy, nếu bạn đang muốn di chuyển thì bạn nên thực hiện một cách tiếp cận phù hợp hơn với Oracle.

Tuy nhiên, bạn có một tình huống khác và rõ ràng việc giữ đồng bộ hai cơ sở mã sẽ giúp cuộc sống của bạn dễ dàng hơn.

Điều gần nhất với các bảng tạm thời khi bạn muốn sử dụng chúng là các bộ sưu tập PL / SQL; cụ thể là các bảng lồng nhau.

Có một số cách để khai báo những điều này. Đầu tiên là sử dụng một mẫu SQL - một con trỏ - và xác định một kiểu bảng lồng nhau dựa trên nó. Thứ hai là khai báo một kiểu bản ghi và sau đó xác định một bảng lồng nhau trên đó. Trong cả hai trường hợp, hãy điền biến tập hợp bằng một thao tác hàng loạt.

declare
    -- approach #1 - use a cursor
    cursor c1 is 
          select *
          from t23;
    type nt1 is table of c1%rowtype;
    recs1 nt1;

    -- approach #1a - use a cursor with an explicit projection
    cursor c1a is 
          select id, col_d, col_2 
          from t23;
    type nt1a is table of c1a%rowtype;
    recs1 nt1a;


    -- approach #2 - use a PL/SQL record
    type r2 is record (
        my_id number
        , some_date date
        , a_string varchar2(30)
    );
    type nt2 is table of r2;
    recs2 nt2;
begin
    select *
    bulk collect into recs1
    from t23;

    select id, col_d, col_2
    bulk collect into recs2
    from t23;
end;
/

Sử dụng con trỏ mang lại lợi thế là tự động phản ánh các thay đổi trong (các) bảng bên dưới. Mặc dù RECORD cung cấp lợi thế về sự ổn định khi đối mặt với những thay đổi trong (các) bảng bên dưới. Nó chỉ phụ thuộc vào những gì bạn muốn :)

Có cả một chương trong sổ tay tham khảo PL / SQL. Đọc để tìm hiểu thêm .




  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 thực thi chậm trong C #, nhưng nhanh trong Toad

  2. Việc sử dụng biến TNS_ADMIN trong Oracle là gì?

  3. chọn chế độ hsqldb Oracle để cập nhật NOWAIT

  4. SQL để bỏ qua các hàng có thuộc tính cụ thể từ một bảng đã nối

  5. Làm cách nào để liệt kê tất cả các bảng trong một lược đồ trong Oracle SQL?