Hãy xem xét các đoạn mã T-SQL sau:T-SQL thủ tục lưu trữ - Phát hiện nếu một tham số được cung cấp như OUTPUT
CREATE PROC dbo.SquareNum(@i INT OUTPUT)
AS
BEGIN
SET @i = @i * @i
--SELECT @i
END
GO
DECLARE @a INT = 3, @b INT = 5
EXEC dbo.SquareNum @a OUTPUT
EXEC dbo.SquareNum @b
SELECT @a AS ASQUARE, @b AS BSQUARE
GO
DROP PROC dbo.SquareNum
Tập kết quả là:
ASQUARE BSQUARE
----------- -----------
9 5
Như có thể thấy, @b
không được vuông, b/c nó đã không được thông qua trong khi tham số đầu ra (không OUTPUT
vòng loại khi đi qua trong tham số).
Tôi muốn biết nếu có cách nào tôi có thể kiểm tra trong cơ thể thủ tục được lưu trữ (cơ thể dbo.SquareNum trong trường hợp này) để xem liệu tham số có thực sự được chuyển thành tham số OUTPUT
không?
tôi không nghĩ rằng bạn có thể làm điều đó. –
Tôi đồng ý với Giorgi - đừng nghĩ rằng bạn có thể kiểm tra điều đó trong thời gian chạy. Nếu bạn lo lắng về việc thực thi nó, bạn có thể muốn làm điều này như một hàm vô hướng trả về giá trị mới thay vì sử dụng một thủ tục. –
Câu hỏi thú vị. Tôi không có câu trả lời, nhưng vì tò mò, tại sao bạn lại muốn làm điều này? Tôi tự hỏi nếu có một vấn đề cơ bản có thể được giải quyết theo một cách khác. –