Contoh pertama dikenal sebagai "Fungsi Inline Table-Valued" yang memiliki manfaat kinerja dibandingkan dengan Fungsi Table-Valued Multi-pernyataan, yaitu server database dapat Ubah komposisi query dengan ITVF inline ke dalam query orang tua, pada dasarnya menjadi parameterised VIEWsedangkan MSTVF berperilaku lebih seperti prosedur penyimpanan buram (meskipun dengan kelebihannya sendiri dibandingkan dengan sprocs). Fungsi sebaris harus lebih disukai daripada MSTVF. Jika Anda memang perlu menghitung dan menyimpan nilai antara (seperti hasil dari ekspresi fungsi skalar yang kompleks), gunakan subkueri.
Dai
1
Mungkin juga perlu disebutkan bahwa jika hasil dari apa pun yang Anda gunakan untuk mengisi variabel yang ingin Anda tetapkan dengan cara apa pun dapat digeneralisasikan, maka Anda dapat mempertimbangkan untuk menulis fungsi terpisah untuk menghasilkannya. Ini akan memungkinkan Anda untuk menggunakan ITVF yang dijelaskan oleh @Dai di atas, dengan semua manfaatnya, sambil tetap memasukkan nilai yang dihasilkan secara dinamis ke dalam fungsi Anda. Saya baru saja menulis fungsi dengan bantuan solusi di atas (terima kasih @MikaelEriksson!) Yang meneruskan salah satu parameternya ke fungsi pembantu untuk menyelamatkan saya karena harus menggunakan formulir MSTVF.
naughtilus
1
biaya terbesar adalah memasukkan fungsi saya dan saya tidak tahu cara melewati biaya ini tanpa memasukkan ke variabel tabel dan mengembalikan hasil pilih
uzay95
@naughtilus akan sangat bagus untuk melihat contoh ini. Sudahkah Anda mempertimbangkan untuk memberikan jawaban lain bersama dengan saran Anda?
Jawaban:
Ada dua jenis fungsi nilai tabel. Satu yang hanya pernyataan pilih dan yang bisa memiliki lebih banyak baris daripada hanya pernyataan pilih.
Ini tidak boleh memiliki variabel:
Anda harus melakukan seperti ini:
sumber
VIEW
sedangkan MSTVF berperilaku lebih seperti prosedur penyimpanan buram (meskipun dengan kelebihannya sendiri dibandingkan dengan sprocs). Fungsi sebaris harus lebih disukai daripada MSTVF. Jika Anda memang perlu menghitung dan menyimpan nilai antara (seperti hasil dari ekspresi fungsi skalar yang kompleks), gunakan subkueri.