sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad fører til denne mærkelige SQL-adfærd?

Din kode opfører sig som forventet. Proceduren kalder sig selv rekursivt .

Hvis du ikke ønsker det, prøv dette:

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

Hvis du vil for at bruge rekursion skal du definere et basecase (AKA "exit condition") som vil få lagret procedure til at forlade rekursionsstakken.



  1. Hvilket indeks skal jeg bruge, når jeg bruger JOIN på PRIMARY KEY

  2. SQL-forespørgsel for at få aftaleliste

  3. 2 eksempeldatabaser til SQLite

  4. Sådan får du året fra en date i T-SQL