TSQLT从存储过程返回结果

时间:2013-10-09 11:45:07

标签: sql-server stored-procedures tsqlt

在TSQLT中,我尝试从存储过程返回结果并将其添加到变量中,以便我可以断言它是否与我预期的结果匹配。

我已经看到了很多函数返回结果的示例,但是没有调用存储过程的示例。

有人有他们可以分享的例子吗?

提前致谢

3 个答案:

答案 0 :(得分:0)

看看这里: http://technet.microsoft.com/en-us/library/ms188655.aspx

有关从存储过程返回值的大量示例。在页面底部还有一个关于评估返回代码的示例。

答案 1 :(得分:0)

其实非常简单。

declare @variable int
exec @variable = _Stored_Procedure

答案 2 :(得分:0)

如果你想从存储过程中获取变量,一种方法是使用out参数

CREATE PROC MyTest
(@myVar int output)
AS
BEGIN
  SET @myVar = 10
END
GO
DECLARE @x int
EXEC MyTest @myVar=@x output
SELECT @x

如果从存储过程中获取结果集,这里是我编写的tSQLt测试的示例。我没有为整个测试烦恼,因为这应该能满足你的需要。

    CREATE TABLE #Actual (SortOrder int identity(1,1),LastName varchar(100), FirstName varchar(100), OrderDate datetime, TotalQuantity int) 
    -- Act  
    INSERT #Actual (LastName, FirstName, OrderDate, TotalQuantity)
    EXEC Report_BulkBuyers @CurrentDate=@CurrentDate    

这里的诀窍是你必须先创建#actual表。它应包含与存储过程返回的列相同的列。

除此之外,你可能已经注意到我在#actual表中有一个SortOrder列。这是因为我有兴趣测试为此特定报告返回的数据的顺序。 EXEC tSQLt.AssertEqualsTable将匹配类似的行,但不符合行在预期和实际中出现的顺序,因此确保顺序的方法是将SortOrder列(它是标识列)添加到两者中#expected和#actual