sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué lleva a este extraño comportamiento de SQL?

Su código se está comportando como se esperaba. El procedimiento se llama a sí mismo recursivamente .

Si no quieres eso, prueba esto:

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

Si quieres para usar la recursividad, debe definir un caso base (AKA "condición de salida") que hará que el procedimiento almacenado salga de la pila de recursividad.