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

SELECT * FROM TABLE (hàm pipelined):tôi có thể chắc chắn về thứ tự của các hàng trong kết quả không?

Tôi không nghĩ rằng có bất kỳ chỗ nào trong tài liệu đảm bảo thứ tự mà dữ liệu sẽ được trả lại.

Có một Chuỗi Tom Kyte từ năm 2003 (so might lỗi thời) trong đó nói rằng việc dựa vào thứ tự ngầm định sẽ không được khuyến khích, vì những lý do tương tự như bạn sẽ không dựa vào thứ tự trong SQL thông thường.

Để an toàn, bạn nên làm như mọi khi trong một truy vấn, nêu một LỆNH BẰNG CÁCH rõ ràng, nếu bạn muốn các kết quả truy vấn được sắp xếp theo thứ tự.

Đã nói rằng tôi đã sử dụng chức năng của bạn và chạy 10 triệu lần lặp, để kiểm tra xem thứ tự ngầm định đã bao giờ bị phá vỡ hay chưa; nó không phải.

SQL> begin
  2    for i in 1 .. 10000000 loop
  3      for j in ( SELECT a.*, rownum as rnum FROM table(temp_func()) a ) loop
  4
  5         if j.x <> j.rnum then
  6            raise_application_error(-20000,'It broke');
  7         end if;
  8      end loop;
  9    end loop;
 10  end;
 11  /

PL/SQL procedure successfully completed.


  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ững thay đổi chính về Công nghệ trong E-Business Suite 12.2

  2. Có thể đạt tới MAX_UTILIZATION cho PROCESSES gây ra Không thể nhận được kết nối được quản lý Ngoại lệ không?

  3. Sử dụng phân biệt trên một cột và thực hiện theo thứ tự trên một cột khác sẽ gây ra lỗi

  4. Truy vấn cập nhật Oracle với các phép nối

  5. null so với chuỗi rỗng trong Oracle