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.