Saya mencoba mengubah nilai parameter default dengan ini:
ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()
dan semua yang diberikan pra-kompilator SQL kepada saya adalah kesalahan ini:
Psn 102, Level 15, Status 1, Prosedur my_sp, Baris 8 Sintaks salah dekat '('.
Saya sudah membuat prosedur. (Saya tidak yakin apakah itu relevan.) Saya menggunakan nilai default null dan memeriksanya nanti, tetapi tampaknya tidak tepat. Bisakah saya melakukan ini dalam satu baris?
Pembaruan: Saya keluar dari deskripsi MSDN tentang parameter prosedur tersimpan :
[= default] Adalah nilai default untuk parameter. Jika nilai default ditentukan, fungsi tersebut dapat dijalankan tanpa menentukan nilai untuk parameter itu.
Catatan:
Nilai parameter default dapat ditentukan untuk fungsi CLR kecuali untuk tipe data varchar (max) dan varbinary (max).Ketika parameter fungsi memiliki nilai default, kata kunci DEFAULT harus ditentukan saat fungsi dipanggil untuk mengambil nilai default. Perilaku ini berbeda dengan menggunakan parameter dengan nilai default dalam prosedur tersimpan yang menghilangkan parameter juga menyiratkan nilai default.
Apakah saya salah membaca ini?
Terimakasih banyak.
sumber
Saya tidak berpikir itu mungkin, Anda harus menggunakan nilai literal (konstan) sebagai default.
Bagaimanapun Anda bisa melakukan ini:
sumber
Anda dapat mencoba sebagai berikut:
sumber
Saya menyimpulkan Anda menggunakan Microsoft SQL Server dari tanda kurung siku dalam contoh Anda.
Dari MSDN :
Fungsi
GETDATE()
mengembalikan nilai yang berbeda dari waktu ke waktu, jadi ini bukan ekspresi konstan.sumber
Nilai itu tidak deterministik dan tidak bisa digunakan
sumber
Saran:
Setel default ke
NULL
Lakukan Default
GETDATE()
di ujung depan.sumber