Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Điều gì dẫn đến hành vi SQL kỳ lạ này?

Mã của bạn đang hoạt động như mong đợi. Quy trình này tự gọi là đệ quy .

Nếu bạn không muốn điều đó, hãy thử điều này:

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

Nếu bạn muốn để sử dụng đệ quy, bạn phải xác định trường hợp cơ sở (AKA "điều kiện thoát") sẽ làm cho thủ tục đã lưu trữ thoát khỏi ngăn xếp đệ quy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN nhiều bản ghi bằng SQL Server 2008

  2. TSQL Kết hợp Nhiều Hàng thành Một Hàng

  3. Cần xuất các trường chứa dấu ngắt dòng dưới dạng CSV từ SQL Server

  4. Triển khai tải gia tăng bằng cách sử dụng Thay đổi tính năng thu thập dữ liệu trong SQL Server

  5. Thay đổi thông báo với Sql Server 2008