2009-07-02 13 views
5

Mogę użyć instrukcji PRINT w procedurze przechowywanej do debugowania mojego kodu. Widzę dane wyjściowe na karcie Wiadomości programu SQL Server Management Studio. Jak mogę zrzucić jedno lub więcej wyjść instrukcji SELECT do tej karty Wiadomości?Jak zrzucić instrukcję SELECT do panelu "Wiadomości" w programie SQL Server MGMT Studio z procedury składowanej?

Moja procedura składowana zwraca kilka zmiennych wyjściowych, więc zwrócenie pojedynczego zestawu danych nie jest tutaj możliwe. Walczę ze znalezieniem dobrego sposobu na debugowanie złożonych procedur.

Odpowiedz

3

Pierwsze całą treść zapytania do drukowania do okno wiadomości prawdopodobnie będzie większym problemem niż jest warte. Zamiast tego zaleciłbym debugowanie procedury z okna zapytania. Możesz dodać opcjonalny parametr do swojej procedury, z domyślną wartością NULL. Twoja aplikacja nie przekazuje go, więc możesz użyć tego na swoją korzyść. Ex:

Alter Procedure Foo(@Col1 int, @col2 varchar(20), @Debug Bit = NULL) 
As 
SET NOCOUNT ON 

If @Debug = 1 
    Begin 
    Select * From SomeTable Where Col1 = @Col1 
    End 

-- The rest of your code here 

Wtedy, kiedy nazywają tę procedurę z okna kwerendy, wystarczy przejść na wartości od 1 do procedury dla tego parametru @Debug

1

Czy musi znajdować się w okienku wiadomości? Zawsze mi wygodnie jest po prostu uruchomić kwerendę wyboru, która wyprowadza wyniki do panelu wyników, z faktycznym wynikiem w innym zestawie wyników. Czasami dołączam kolumnę "identyfikatora", która pomaga zidentyfikować wyniki. Na przykład:

select 'checkpoint1',a,b,c from table1 
.... 
select 'table @a', * from @a 
.... 
<actual query here> 

Gdy przechowywane proc jest gotowy do pracy po prostu usunąć te oświadczenia rusztowania

10

ustawić „Wyniki na tekst” opcję, a wyniki i komunikaty zakładki będą konsolidowane na jednej karcie, łącząc twoje instrukcje PRINT i SELECT.

Aby ustawić Wyniki na tekst, albo:

  • kontrolne-T
  • menu Query \ Wyniki na \ Wyniki na tekst
2

Możecie wypełnić tabelę tymczasową lub zmiennej tabeli , z poziomu problematycznej procedury przechowywanej, a następnie wybierz jedną z tych tabel po wywołaniu procedury przechowywanej. Upuść i odtwórz wszystkie tymczasowe tabele w sp.

CREATE TABLE ##t1 (x int) 
GO 

CREATE PROCEDURE Foo AS 
BEGIN 
    TRUNCATE TABLE ##t1 
    INSERT INTO ##t1 SELECT column FROM table; 
END 
GO 

exec Foo; 
select x from ##t1; 
Powiązane problemy