Di SQL Server 2005, apakah ada konsep sekali pakai, atau fungsi lokal yang dideklarasikan di dalam skrip SQL atau Prosedur Tersimpan? Saya ingin mengabstraksikan beberapa kerumitan dalam skrip yang saya tulis, tetapi itu membutuhkan kemampuan untuk mendeklarasikan suatu fungsi.
Hanya penasaran.
sql
sql-server
sql-server-2005
tsql
scripting
Mark Carpenter
sumber
sumber
Jawaban:
Anda dapat menelepon di
CREATE Function
dekat awal skrip dan diDROP Function
dekat akhir.sumber
Anda dapat membuat prosedur yang disimpan sementara seperti:
dalam skrip SQL, tetapi tidak berfungsi. Anda dapat meminta proc menyimpan hasilnya dalam tabel temp, kemudian menggunakan informasi itu nanti di skrip ..
sumber
BEGIN
kata kunci, dan menggantiEND
kata kunci denganGO
.Ekspresi Tabel Umum memungkinkan Anda menentukan tampilan dasarnya yang hanya bertahan dalam lingkup pernyataan pilih, sisipkan, perbarui, dan hapus. Bergantung pada apa yang perlu Anda lakukan, mereka bisa sangat berguna.
sumber
Saya tahu saya mungkin akan dikritik karena menyarankan SQL dinamis, tetapi terkadang ini adalah solusi yang baik. Pastikan Anda memahami implikasi keamanan sebelum Anda mempertimbangkan ini.
sumber
Dalam skrip, Anda memiliki lebih banyak opsi dan bidikan yang lebih baik pada dekomposisi rasional. Lihat ke mode SQLCMD (Query Menu -> SQLCMD mode), khususnya perintah: setvar dan: r.
Dalam prosedur tersimpan, pilihan Anda sangat terbatas. Anda tidak dapat membuat definisikan fungsi secara langsung dengan isi prosedur. Hal terbaik yang dapat Anda lakukan adalah seperti ini, dengan SQL dinamis:
Ini mendekati fungsi sementara global, jika hal seperti itu ada. Itu masih terlihat oleh pengguna lain. Anda bisa menambahkan @@ SPID koneksi Anda untuk mengunikan nama, tapi itu akan memerlukan prosedur lainnya untuk menggunakan SQL dinamis juga.
sumber
Di bawah ini adalah apa yang telah saya gunakan di masa lalu untuk memenuhi kebutuhan UDF Scalar di MS SQL:
Pendekatan yang menggunakan variabel global untuk PROCEDURE memungkinkan Anda untuk menggunakan fungsi tidak hanya dalam skrip Anda, tetapi juga dalam kebutuhan SQL Dinamis Anda.
sumber