Kode Anda berperilaku seperti yang diharapkan. Prosedur ini menyebut dirinya sendiri secara rekursif .
Jika Anda tidak mau itu, coba ini:
ALTER PROCEDURE dbo.Test
@Value int = null
AS
BEGIN
IF (IsNull(@Value, '') = '')
SELECT 'I am NULL!'
ELSE
SELECT 'I am ' + CONVERT(varchar(20), @Value)
END
GO
EXEC dbo.Test
Jika Anda ingin untuk menggunakan rekursi, Anda harus mendefinisikan kasus dasar (AKA "kondisi keluar") yang akan membuat prosedur tersimpan keluar dari tumpukan rekursi.