在測試procs的輸出值時,爲什麼最終的select @TestValOut
返回0
而不是null
或空字符串?爲什麼這個簡單proc的輸出會改變數據類型?
我明白這樣做的正確方法是使用OUTPUT
參數,所以真正的問題就變成了:爲什麼是@TestValOut
設定值的數據類型,在執行一個整數?
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'Custom.test') AND type in (N'P', N'PC'))
DROP PROCEDURE Custom.test
GO
CREATE PROCEDURE Custom.test (
@CurrentUserID INT = 1
)
As
Declare @TestValIn varchar(max)
select @TestValIn='asdf'
GO
BEGIN TRAN
Declare @TestValOut varchar(max)
set @TestValOut='ffff'
Exec @TestValOut=Custom.test @CurrentUserID=1
select @TestValOut
ROLLBACK
我剛剛重讀了這個問題。我的壞評論 – 2011-06-09 18:18:38
廢話,'@ TestValOut'獲取返回值而不是結果集 – SQLMenace 2011-06-09 18:19:40
@ScottV:錯誤。 @TestValOut被分配了來自RETURN的值。存儲過程沒有結果集 – gbn 2011-06-09 18:19:59