Saya punya skrip ini:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
IF EXISTS ( bla bla bla )
RETURN 1;
RETURN 0;
END
GO
Saya ingin menggunakannya dalam prosedur dengan cara ini:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Tapi saya mendapatkan kesalahan:
Jumlah argumen yang disediakan untuk prosedur atau fungsi dbo.CheckIfSFExists tidak mencukupi.
Mengapa itu tidak berhasil?
tsql
function
default-parameters
nirmus
sumber
sumber
default
konsep di sini ... Saya harus pergi dan mengubah semua tempat sekarang.Anda dapat menyebutnya tiga cara - dengan parameter, dengan DEFAULT dan melalui EXECUTE
sumber
DEFAULT
kata kunci diperlukan di pilih, tetapi dapat dihilangkan dalam mengeksekusi? Ini menyebalkan: / Semoga ini akan diperbaiki suatu hari nanti.Dengan fungsi yang ditentukan pengguna, Anda harus mendeklarasikan setiap parameter, bahkan jika mereka memiliki nilai default.
Berikut ini akan dieksekusi dengan sukses:
sumber
Salah satu cara mengatasi masalah ini adalah dengan menggunakan prosedur tersimpan dengan parameter output.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
nilai yang Anda tidak lulus secara default ke default yang ditetapkan dalam prosedur tersimpan itu sendiri. Dan Anda bisa mendapatkan hasil dari variabel output Anda.
sumber