Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co prowadzi do tego dziwnego zachowania SQL?

Twój kod działa zgodnie z oczekiwaniami. Procedura nazywa się rekurencyjnie .

Jeśli nie chcesz tego, spróbuj tego:

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

Jeśli chcesz aby użyć rekurencji, musisz zdefiniować przypadek podstawowy (AKA „warunek wyjścia”), który spowoduje, że procedura składowana wyjdzie ze stosu rekurencji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj TO_DATE w SQL Server 2012

  2. Rzędy utrzymujące maksimum grupowe określonej kolumny (jak zabijać duplikaty...)

  3. Powolne działanie zapytania tylko na moim komputerze

  4. Jak uzyskać identyfikator Insert w MSSQL w PHP?

  5. Utwórz zadanie agenta serwera SQL za pomocą programu SSMS