Ihr Code verhält sich wie erwartet. Die Prozedur ruft sich rekursiv auf .
Wenn Sie nicht Wenn Sie das möchten, versuchen Sie Folgendes:
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
Wenn Sie möchten Um die Rekursion zu verwenden, müssen Sie einen Basisfall definieren (auch bekannt als "Beendigungsbedingung"), wodurch die gespeicherte Prozedur den Rekursionsstapel verlässt.