2009-07-02 1 views
5

Posso usare l'istruzione PRINT in una stored procedure per eseguire il debug del mio codice. Vedo l'output nella scheda Messaggi di SQL Server Management Studio. Come posso scaricare uno o più interi output di istruzioni SELECT nella scheda Messaggi?Come posso scaricare un'istruzione SELECT nel riquadro "Messaggi" in mgmt studio di SQL Server da una stored procedure?

La mia stored procedure restituisce diverse variabili di output, pertanto restituire un singolo set di dati non è un'opzione qui. Sto lottando per trovare un buon modo per eseguire il debug delle mie complesse procedure.

risposta

3

Ottenere l'intero contenuto di una query per stampare su finestra dei messaggi sarebbe probabilmente più problemi di quanto valga. Invece, suggerirei di eseguire il debug della procedura da una finestra di query. Quello che puoi fare è aggiungere un parametro opzionale alla tua procedura, con un valore predefinito di NULL. La tua app non la passerà, quindi puoi usarla a tuo vantaggio. Es:

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 

Poi, quando si chiama questa procedura da una finestra di query, semplicemente passare in un valore di 1 alla procedura per quel parametro @Debug

1

Deve essere nel riquadro dei messaggi? Trovo sempre conveniente eseguire semplicemente la query di selezione, che restituisce i risultati nel riquadro Risultati, con l'output effettivo in un altro set di risultati. A volte includo una colonna "identificatore" che aiuta a identificare i risultati. Per esempio:

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

Quando la stored procedure è pronto ad andare solo rimuovere queste affermazioni ponteggi

10

impostare il "Risultati in testo" l'opzione e i risultati e Messaggi schede saranno consolidati a una singola scheda, combinando le tue istruzioni PRINT e SELECT.

Per impostare Risultati in testo, sia:

  • Control-T
  • menu Query \ Risultati Per \ Risultati in testo
2

si potrebbe compilare una tabella temporanea, o variabile di tabella , dalla procedura memorizzata problematica, quindi selezionare da quelle tabelle dopo aver chiamato la stored procedure. Assicurati di eliminare e ricreare qualsiasi tabella temporanea nella 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;