Pertama, ini tidak ada hubungannya dengan CTE. Perilaku ini akan sama dengan select * from table
pertanyaan. Perbedaannya adalah bahwa dengan T-SQL, kueri masuk ke kursor implisit yang dikembalikan ke pemanggil. Saat menjalankan SP dari Management Studio, ini nyaman. Kumpulan hasil muncul di jendela data seolah-olah kita telah mengeksekusi kueri secara langsung. Tapi ini sebenarnya perilaku non-standar. Oracle memiliki perilaku yang lebih standar yang dapat dinyatakan sebagai "set hasil dari setiap kueri yang tidak diarahkan ke kursor harus diarahkan ke variabel." Saat diarahkan ke variabel, maka kueri harus mengembalikan hanya satu baris.
Untuk menduplikasi perilaku T-SQL, Anda hanya perlu mendeklarasikan dan mengembalikan kursor secara eksplisit. Kemudian kode panggilan mengambil dari kursor seluruh hasil yang ditetapkan tetapi satu baris pada satu waktu. Anda tidak mendapatkan kemudahan Pengembang Sql atau Pengembang PL/SQL mengalihkan hasil yang disetel ke jendela tampilan data, tetapi Anda tidak dapat memiliki semuanya.
Namun, karena kami biasanya tidak menulis SP hanya untuk dipanggil dari IDE, lebih mudah untuk bekerja dengan kursor eksplisit Oracle daripada yang implisit SQL Server. Cukup google "oracle return ref cursor to caller" untuk mendapatkan banyak materi bagus.