2010-09-22 21 views
16

Vì vậy, tôi đang viết này được lưu trữ Proc và tôi thực sự hút tại SQL.SQL Chọn một hàng và lưu trữ trong một biến SQL

Câu hỏi của tôi để các bạn là:

Tôi có thể chọn toàn bộ hàng và lưu nó trong một biến?

Tôi biết tôi có thể làm điều gì đó như:

declare @someInteger int 
select @someInteger = (select someintfield from sometable where somecondition) 

Nhưng tôi có thể chọn toàn bộ hàng từ sometable và lưu nó trong một biến?

Trả lời

26

Bạn có thể chọn các trường thành nhiều biến:

DECLARE @A int, @B int 

SELECT 
    @A = Col1, 
    @B = Col2 
FROM SomeTable 
WHERE ... 

khác, có khả năng tốt hơn, cách tiếp cận sẽ được sử dụng một biến bảng:

DECLARE @T TABLE (
    A int, 
    B int 
) 
INSERT INTO @T (A, B) 
SELECT 
    Col1, 
    Col2 
FROM SomeTable 
WHERE ... 

Sau đó bạn có thể chọn từ biến bảng của bạn như một bảng thông thường.

+0

yeah tôi đoán tôi có thể làm điều đó ... Đó có thể là giải pháp tốt nhất trong trường hợp này ... Tôi về cơ bản đang cố gắng dọn dẹp mã SQL khó xử của tôi và điều này sẽ làm cho nó sạch hơn một chút, ngay bây giờ về cơ bản tôi có cùng một mã trong nếu khối đó trong khối khác ... điều này ít nhất sẽ loại bỏ một số mã lặp lại ... – EJC

+0

@EJC: "ngay bây giờ tôi về cơ bản có cùng mã trong khối nếu trong khối khác" - lưu ý cách tiếp cận hiện tại của bạn có thể tốt hơn từ quan điểm thực hiện nhưng rõ ràng bạn cần phải kiểm tra. – onedaywhen

+0

tất nhiên! :) Cảm ơn vì lời khuyên – EJC

5

Bạn có thể tạo một biến bảng phù hợp với sơ đồ bảng của bạn và lưu trữ các hàng duy nhất trong nó:

declare @myrow table(field0 int,field1 varchar(255)) 
insert into @myrow 
select field0,field1 from mytable where field0=1 
Các vấn đề liên quan