MS SQL: Подавите возвращаемое значение хранимой процедуры, названной в хранимой процедуре

Я выбрал ответ Prix для указания определения пользовательского агента, но я нашел другой способ сделать цикл, который избегает вложенных циклов и облегчает доступ к другим узлам. Вот что я использую (решение DOM Document):

$xml_url = "https://thehockeywriters.com/category/san-jose-sharks/feed/";

$curl = curl_init();
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_URL, $xml_url );
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0");

$xml = curl_exec( $curl );
curl_close( $curl );

$document = new DOMDocument;
$document->loadXML( $xml ); 

$items = $document->getElementsByTagName("item");       
foreach ($items as $item) {     
    $title = $item->getElementsByTagName('title')->item(0)->nodeValue;
    echo $title;
    $desc = $item->getElementsByTagName('description')->item(0)->nodeValue;
    echo $desc;
}
11
задан Community 23 May 2017 в 10:31
поделиться

3 ответа

Не NOCOUNT это вызывает это, Ваши хранимые процедуры имеют выбор каждый так, что каждый существует его собственного набора результатов. Этого можно было избежать путем изменения первой хранимой процедуры для использования выходных параметров для пасования назад номера 1 вместо того, чтобы делать выбор. Вторая хранимая процедура могла затем исследовать выходной параметр для получения данных, которые это должно выполнить.

Попробуйте что-то вроде этого

CREATE PROCEDURE Proc1
(
    @RetVal INT OUTPUT
)
AS
SET NOCOUNT ON
SET @RetVal = 1


CREATE PROCEDURE Proc2
AS
SET NOCOUNT ON
DECLARE @RetVal int
EXEC    [dbo].[Proc1]
        @RetVal = @RetVal OUTPUT
SELECT  @RetVal as N'@RetVal'
9
ответ дан 3 December 2019 в 04:34
поделиться

Это не возвращаемые переменные, но выходные официальные наборы документов. Я предполагаю что, как только вывод сбросов SQL-сервера клиенту, Вы завинчены и не можете забрать его.

Я решил бы это путем добавления параметра к SP return_1, который будет управлять, если return_1 выбрали бы записи или просто наполняют и тихо выходят.

2
ответ дан 3 December 2019 в 04:34
поделиться

Как Матовые точки в его комментарии, никакое решение действительно не 'глотает' первый набор результатов. Я не знаю, почему Вы хотели бы это, но можно 'глотать' результат первого должностного лица при помощи табличной переменной. Это должно соответствовать точной сумме и типу столбцов набора результатов. Как так:

CREATE PROCEDURE return_1 AS 
    SET NOCOUNT ON;
    SELECT 1
GO
CREATE PROCEDURE call_return_1_and_return_2 AS 
    SET NOCOUNT ON;
    DECLARE @Result TABLE (res int)
    insert into @Result EXEC return_1
    SELECT 2
GO
13
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: