Как вернуть данные из хранимой процедуры - PullRequest
1 голос
/ 10 февраля 2012

Я пытаюсь отладить \ выполнить SP из t-sql (sql server 2008), и когда я выполняю следующий sql, он возвращает только сообщение «Команда (и) успешно выполнена».

Я знаю, что SP возвращает данные в таблице через параметр @RETURN_VALUE, как мне заставить это отображаться в окне запроса sql.

exec STARMS.dbo.GetMetaData @@Assembly=13366,@@Namespace=NULL,@@ParameterName=NULL,@@Standard=0,@@Timestamp=NULL

SP выглядит примерно так (удалено основное тело), ​​интересная часть - создание временной таблицы, а затем возврат содержимого временной таблицы:

CREATE PROCEDURE [dbo].[GetMetaData]
    @@Assembly Sql_Variant = NULL,
    @@Namespace Varchar(30) = NULL,
    @@ParameterName Varchar(40) = NULL,
    @@Standard Bit = 0,
    @@Timestamp DateTime = NULL
AS

    SET NOCOUNT ON

    DECLARE @ResultTable TABLE (AssemblyId Int, Namespace Varchar(30), ParameterName Varchar(40), Value Varchar(100))

    -- Does loads of stuff and then inserts into @ResultTable table...

    SET NOCOUNT OFF

    -- Return the result
    SELECT AssemblyId, Namespace, ParameterName, [Value]
        FROM @ResultTable

    RETURN

Примечание: причина, по которой я задаю вопрос, заключается в том, что я пытаюсь посмотреть на производительность SP в SQL Server 2008, и я не уверен, почему он не возвращает данные в окне запроса.

1 Ответ

2 голосов
/ 10 февраля 2012

Проверьте свой полный код SP, возможно, где-то есть оператор RETURN, поэтому - SP не вернет никаких данных (обратите внимание на IF SomeContition IS TRUE RETURN):

CREATE PROCEDURE [dbo].[GetMetaData]
    @@Assembly Sql_Variant = NULL,
    @@Namespace Varchar(30) = NULL,
    @@ParameterName Varchar(40) = NULL,
    @@Standard Bit = 0,
    @@Timestamp DateTime = NULL
AS

    SET NOCOUNT ON

    DECLARE @ResultTable TABLE (AssemblyId Int, Namespace Varchar(30), ParameterName Varchar(40), Value Varchar(100))

    -- Does loads of stuff and then inserts into @ResultTable table...

    IF SomeContition IS TRUE RETURN

    SET NOCOUNT OFF

    -- Return the result
    SELECT AssemblyId, Namespace, ParameterName, [Value]
        FROM @ResultTable

    RETURN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...