2009-08-06 135 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的限制:它不喜欢将用户定义的函数调用作为参数传递给存储过程。你必须声明一个变量。

相关问题