sql >> Databáze >  >> RDS >> Sqlserver

Co vede k tomuto podivnému chování SQL?

Váš kód se chová podle očekávání. Postup se nazývá rekurzivně .

Pokud neděláte chcete to, zkuste toto:

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

Pokud chcete Chcete-li použít rekurzi, musíte definovat základní případ (AKA "exit condition"), která způsobí, že uložená procedura opustí zásobník rekurze.



  1. Pokrok v online upgradu

  2. Invoke-Sqlcmd :Při navazování připojení k serveru SQL došlo k chybě související se sítí nebo specifickou instancí

  3. Oracle.DataAccess.Client.OracleException ORA-03135:kontakt ztraceného připojení

  4. Jaký je ekvivalent časového razítka/verze řádku (SQL Server) s PostgreSQL