2015-01-02 18 views
6

Devo impostare un risultato di query sql dinamico su una variabile. La mia query SQL è:Impostare EXECUTE sp_executesql come risultato in una variabile in sql

DECLARE @ResultString NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT Test FROM MTest22Dec WHERE ID = 1'  
EXECUTE sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @[email protected] OUTPUT 
PRINT @ResultString 

Ma @ResultString è la stampa stringa vuota anche se v'è record nella tabella del database.

Che cosa c'è di sbagliato in questa query?

grazie

risposta

2

È necessario impostare la variabile di uscita da qualche parte, ad es.

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1' 
+0

E poiché '@ Qry' è una variabile' NVARCHAR', si dovrebbe davvero ** ** utilizzare il 'N 'prefisso per chiarire:' SET @Qry = N'SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'' –

3

è necessario assegnare il risultato della selezione per variable all'interno Dynamic statement.

Modifica query come questa.

DECLARE @Result NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1' 

EXECUTE Sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result OUTPUT 

PRINT @Result 
1

Prova questo:

DECLARE @ResultString NVARCHAR(MAX) 
DECLARE @Qry NVARCHAR(MAX) 

SET @Qry='SELECT @ResultString = Test FROM MTest22Dec WHERE ID = 1'  
EXECUTE sp_executesql @Qry, N'@ResultString NVARCHAR(MAX) OUTPUT', @ResultString OUTPUT 
PRINT @ResultString 
0

Prova questo:

Declare @Query NVARCHAR(100) 
Declare @ResultString varchar(50) 

set @Query =N'select @ResultString=Test from dbo.MTest22Dec where id = @id' 

exec sp_executesql @Query, N'@id int,@ResultString varchar(20) output', 
@id = 1,@[email protected] output 

print @ResultString 
+0

Ti suggerisco di aggiungere alcuni commenti sul codice e formattare il codice come codice. (c'è un pulsante nell'editor che contrassegna il testo come codice nella risposta) –

+0

Questo codice che ti aiuterà – AnantharajG

Problemi correlati