2009-08-06 134 views
1

我有一個名爲dbo.GetFoo()的函數。我還有一個名爲AssertEqual的單元測試存儲過程(需要@TargetValue sql_variant,@ ExpectedValue sql_variant和@Message varchar)將函數值傳遞給MS SQL中的存儲過程

我想調用GetFoo()並檢查它是否返回正確的值'X 」。我的T-SQL語句是:

exec AssertEqual dbo.GetObjectType(), 'S', 'Check If S' 

我得到這個消息:

Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near '.'. 

這似乎是在窒息 「DBO」。部分(我可以傳遞它一個字符串,它工作正常)。

有沒有辦法解決這個問題,除了爲目標值聲明一個變量?

另外:是否有更好的方法來做SQL的單元測試?

回答

5

這是T-SQL的限制:它不喜歡將用戶定義的函數調用作爲參數傳遞給存儲過程。你必須聲明一個變量。

相關問題