Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво води до това странно поведение на SQL?

Вашият код се държи според очакванията. Процедурата се самоизвиква рекурсивно .

Ако не се искате това, опитайте това:

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

Ако искате за да използвате рекурсия, трябва да дефинирате основен случай (известен още като „условие за изход“), което ще накара съхранената процедура да излезе от стека за рекурсия.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Circle

  2. SqlBulkCopy от списък<>

  3. Как да получите най-добре платения ред служител

  4. Използване на Like на параметърна променлива?

  5. Съкращаване на SQL Server и ограничение 8192