将函数值传递给MS SQL中的存储过程

Cra*_*ker 1 sql t-sql unit-testing stored-procedures function

我有一个名为dbo.GetFoo()的函数.我还有一个名为AssertEqual的单元测试存储过程(它接受@TargetValue sql_variant,@ ExpectedValue sql_variant和@Message varchar)

我想调用GetFoo()并检查它是否返回正确的值'X'.我的T-SQL语句是:

exec AssertEqual dbo.GetObjectType(), 'S', 'Check If S'
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)

它似乎在"dbo"上窒息.part(我可以传递一个文字字符串,它工作正常).

除了为目标值声明变量之外,还有什么方法吗?

或者:有没有更好的方法来进行SQL的单元测试?

Ben*_*n M 5

这是T-SQL的一个限制:它不喜欢用户定义的函数调用作为参数传递给存储过程.你必须声明一个变量.