Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SELECT * FROM TABLE(fungsi pipelined):dapatkah saya memastikan urutan baris dalam hasil?

Saya rasa tidak ada bagian dalam dokumentasi yang menjamin urutan data yang akan dikembalikan.

Ada Uraian Tom Kyte dari tahun 2003 (jadi mungkin menjadi kedaluwarsa) yang menyatakan bahwa mengandalkan urutan implisit tidak disarankan, karena alasan yang sama seperti Anda tidak akan mengandalkan urutan dalam SQL biasa.

Agar aman, Anda harus melakukan seperti yang selalu Anda lakukan dalam kueri, nyatakan secara eksplisit ORDER BY, jika Anda ingin hasil kueri diurutkan.

Setelah mengatakan bahwa saya telah mengambil fungsi Anda dan menjalankan 10 juta iterasi, untuk memeriksa apakah urutan implisit pernah rusak; bukan.

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. Proses Latar Belakang

  2. Panda ke Oracle melalui SQL Alchemy:UnicodeEncodeError:codec 'ascii' tidak dapat menyandikan karakter

  3. NANVL() Fungsi di Oracle

  4. Mengikuti permintaan yang memberikan dampak pemanfaatan CPU DB, dapatkah saya mengurangi data dalam tabel akan membantu saya mengurangi kinerja CPU DB

  5. Cara membalikkan string di Oracle (11g) SQL tanpa menggunakan fungsi REVERSE()