Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que leva a esse estranho comportamento SQL?


Seu código está se comportando conforme o esperado. O procedimento está chamando a si mesmo recursivamente .

Se você não quer isso, tente isso:
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

Se você quer para usar recursão, você precisa definir um caso base (AKA "condição de saída") que fará com que o procedimento armazenado saia da pilha de recursão.