2015-01-02 13 views
6

Muszę ustawić dynamiczny wynik zapytania sql do zmiennej. Moje zapytanie SQL jest:Ustaw EXECUTE wynik sp_executesql na zmienną w 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 

Ale @ResultString drukuje pusty ciąg chociaż istnieje rekord w tabeli bazy danych.

Co jest nie tak w tym zapytaniu?

dziękuję

Odpowiedz

2

Musisz ustawić gdzieś zmienną wyjściową, np.

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

A ponieważ '@ Qry' jest' zmienna NVARCHAR', należy ** naprawdę ** użyć 'n 'prefiks, aby to wyjaśnić:' SET @Qry = N'SELECT @Result = Testuj z MTest22Dec WHERE ID = 1'' –

3

Musisz przypisać wynik wybierz, aby variable wewnątrz Dynamic statement.

Zmień zapytanie w ten sposób.

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

Spróbuj tego:

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

Spróbuj tego:

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

Sugerowałbym dodanie komentarza wokół kodu i sformatowanie kodu jako kodu. (jest przycisk w edytorze, który oznacza twój tekst jako kod w odpowiedzi) –

+0

Ten kod, który pomoże ci – AnantharajG

Powiązane problemy