2011-11-24 30 views
10

Tôi có truy vấn năng động, tôi muốn nhận hai tham số đầu ra từ nó tôi đã sử dụng đoạn mã sau, nhưng các thông số đầu ra trở về nulltrở hai tham số đầu ra sp_executesql

declare @query nvarchar(max); 
declare @result int; 
declare @type int 
declare @mainVarcharLength int; 

set @query = 'select count(*) , Type_Code from Customers WHERE Customers.Cust_Name = ''CUSTOMER 99'' ' 
set @query = @query + ' and Cus_Is_Active = 1 Group BY Type_Code'; 
select @query 

EXEC sp_executesql @query, N'@result int OUTPUT, @type int OUTPUT', @result, @type 

select @result 
select @type 

Làm thế nào để giải quyết điều đó, và làm thế nào để vượt qua nhiều thông số đầu ra

Trả lời

14

Bạn cần nêu rõ những gì đang được phân bổ cho đầu ra;

set @query = 'select @result=count(*), @type=Type_Code from Customers ....'

sau đó trang trí các đầu ra với OUTPUT;

EXEC sp_executesql @query, 
    N'@result int OUTPUT, @type int OUTPUT', 
    @result OUTPUT, 
    @type OUTPUT 

(Bạn cũng có thể vượt qua ''CUSTOMER 99'' như một đầu vào)

Các vấn đề liên quan