2013-09-16 69 views
7

Tôi đang cố gắng đặt nhiều biến cho kết quả của truy vấn SQL trả về một hàng duy nhất có nhiều cột. Câu lệnh SQL có định dạng:SSIS- Đặt nhiều biến thông qua một tác vụ SQL đơn

SELECT top 1 
    a, 
    b, 
    c = x + y, 
    d 
FROM tablename 
WHERE aSwitch = 1 

Vì vậy, tôi muốn sử dụng tác vụ 'Thực thi truy vấn SQL' sẽ đặt 4 biến gói với kết quả truy vấn.

Ví dụ, nếu kết quả của truy vấn là:

| a |  b | c | d | 
------------------------------------- 
| duck | cow | rabbit | 42 | 

Sau đó, tình trạng của các biến sau khi thực hiện sẽ là:

var1 = duck 
var2 = cow 
var3 = rabbit 
var4 = 42 

Bất kỳ ý tưởng?

(sử dụng VS/SQL 2005)

Trả lời

13

Trong nhiệm vụ SQL, dưới chung menu, thiết lập các ResultSet tài sản để SingleRow.

Sau đó, trong menu ResultSet, hãy thêm các biến theo thứ tự mệnh đề lựa chọn của bạn và ánh xạ các bí danh bằng các biến. Ví dụ:

SELECT 1 AS One, 2 AS Two 

enter image description here

+0

Điều này cũng hoạt động tuyệt vời. Có bất kỳ lợi ích nào cho phương pháp này so với giải pháp mà tôi đã đăng ra khỏi tò mò không? –

+0

Khả năng đọc (không đánh giá thấp khả năng đọc :-)) – jazzytomato

+0

Haha đủ công bằng. Tôi sẽ chọn đây là câu trả lời hàng đầu sau đó (Y) –

-1

Tạo một thủ tục lưu trữ với bốn thông số đầu ra:

CREATE SP_data(
    @x INT, 
    @a int OUTPUT, 
    @b int OUTPUT, 
    @c int OUTPUT 
    @d int output 
) 
AS 
    SELECT top 1 
    @a = a, 
    @b= b, 
    @c = x + y, 
    @d= @d 
FROM tablename 
WHERE Switch = @x 

trong Execute SQL Query trong tab bản đồ tham số tạo bốn thông số đầu ra

sự thực hiện proc

EXEXCUT SP_data 1,? OUTPUT,? OUTPUT,? OUTPUT, ? OUTPUT 
+0

Vui lòng xem câu trả lời của tôi không cần thủ tục lưu sẵn – jazzytomato

0

Tôi đã tìm thấy giải pháp cho điều này bằng cách sử dụng ánh xạ các tập kết quả dưới dạng tập hợp thứ tự dựa trên zero. Ví dụ. trong 'Tập hợp kết quả' trong thuộc tính tác vụ:

result name | variable name 
------------------------------- 
    0  |  a 
    1  |  b 
    3  |  c 
    4  |  d 

Phương pháp này cho phép tôi giữ câu lệnh SQL của mình cũng không thay đổi gì.