2013-10-09 3 views
0

В TSQLT я пытаюсь вернуть результат из хранимой процедуры и добавить ее в переменную, чтобы я мог утверждать, соответствует ли она ожидаемому результату.TSQLT Возврат результатов из хранимой процедуры

Я видел множество примеров возвращаемых результатов из функций, но не там, где вызывается хранимая процедура.

Есть ли у кого-нибудь примеры, которыми они могли бы поделиться?

Заранее спасибо

+0

Задумываетесь ли вы о тестировании параметров кода возврата/вывода или о наборе результатов тестирования (т.е. наборах результатов, возвращаемых из хранимой процедуры одним или несколькими операторами SELECT внутри тела процедуры) ? –

+0

@ Эд, я хочу проверить набор результатов, то есть сравнить возвращаемые значения с тем, что я ожидаю. – Steve

+0

Возможный дубликат [T-SQL получить SELECTED значение хранимой процедуры] (http://stackoverflow.com/questions/2881024/t-sql-get-selected-value-of-stored-procedure) –

ответ

0

Если вы хотите, чтобы получить переменную обратно из хранимой процедуры один из способов сделать это, чтобы использовать выходной параметр

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

+0

Одна вещь, о которой я не упоминал, это то, что я не хочу добавлять какие-либо параметры OUT в SP, поскольку они в настоящее время являются устаревшим SP, используемым в различных приложениях. Я фактически внедрил предложение добавить SP во временную таблицу, а затем запросить результаты оттуда. Он работал очень хорошо и был решением, которое я получил после - Спасибо – Steve

0

Посмотрите здесь: http://technet.microsoft.com/en-us/library/ms188655.aspx

много примеров о возвращении значения из хранимой процедуры. В нижней части страницы также приведен пример оценки кода возврата.

0

его действительно очень простой.

declare @variable int 
exec @variable = _Stored_Procedure 
+0

Я пробовал это, но он продолжал бросать ошибку Invalid Object, когда я пробовал его через TSQLT. – Steve

Смежные вопросы