Jak wyłączyć dane wyjściowe SELECT procedury przechowywanej wywołanej z innej procedury przechowywanej w programie SQL Server?

Nie mówię o robieniu „SET NOCOUNT OFF". Ale mam procedurę składowaną, której używam do wstawiania niektórych danych do niektórych tabel. Ta procedura tworzy ciąg odpowiedzi xml, przykład:

CREATE PROCEDURE [dbo].[insertSomeData] (@myParam int) AS
DECLARE @reply varchar(2048)

... 

SET @reply = '<xml><big /><outputs /></xml>'
SELECT @reply
GO

Więc stworzyłem skrypt, który używa tego SP kilka razy, a „wynik” xml staje się zbyt duży (już raz rozbił moje okno). Czy istnieje sposób na ukrycie lub przekierowanie danych wyjściowych wygenerowanych z tej procedury składowanej? Powyższy dodatek SP jest wywoływany przez skrypt aktualizacji T-SQL, który napisałem, do uruchomienia za pośrednictwem menedżera Enterprise Studio itp.

WHILE unprocessedRecordsLeft
  BEGIN
    SELECT top 1 record from updateTable where Processed = 0
    EXEC insertSomeData @param = record_From_UpdateTable
  END

Powiedzmy, że UpdateTable zawiera około 50 000 rekordów. Ten SP jest wywoływany 50k razy, zapisując 50k ciągów xml do okna wyjściowego. Nie zatrzymało to serwera SQL, tylko aplikację.

Za wszelką pomoc dziękuję!

1 odpowiedź

-- Załóżmy, że ta tabela pasuje do wyniku twojej procedury
DECLARE @tmpNewValue TABLE ([Id] int, [Name] varchar(50))

INSERT INTO @tmpNewValue 
  EXEC ProcedureB

SELECT * FROM @tmpNewValu

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.