Если вы хотите, чтобы получить переменную обратно из хранимой процедуры один из способов сделать это, чтобы использовать выходной параметр
CREATE PROC MyTest
(@myVar int output)
AS
BEGIN
SET @myVar = 10
END
GO
DECLARE @x int
EXEC MyTest @[email protected] 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 @[email protected]
Фокус в том, что сначала необходимо создать таблицу #actual. Он должен содержать те же столбцы, что и возвращаемые из хранимой процедуры.
Как и в стороне, вы, возможно, заметили, что у меня есть столбец SortOrder в таблице #actual. Это связано с тем, что мне было интересно проверить порядок возвращаемых данных для этого конкретного отчета. EXEC tSQLt.AssertEqualsTable будет сопоставлять строки, подобные тем, которые похожи, но не соответствует порядку, в котором строки отображаются в ожидаемом и актуальном, поэтому способ обеспечения порядка состоит в том, чтобы добавить столбец SortOrder (который является столбцом идентификации) #expected и #actual
Задумываетесь ли вы о тестировании параметров кода возврата/вывода или о наборе результатов тестирования (т.е. наборах результатов, возвращаемых из хранимой процедуры одним или несколькими операторами SELECT внутри тела процедуры) ? –
@ Эд, я хочу проверить набор результатов, то есть сравнить возвращаемые значения с тем, что я ожидаю. – Steve
Возможный дубликат [T-SQL получить SELECTED значение хранимой процедуры] (http://stackoverflow.com/questions/2881024/t-sql-get-selected-value-of-stored-procedure) –