2012-10-15 38 views
12

thể trùng lặp:
SQL: Select dynamic column name based on variableTôi có thể vượt qua biến để chọn tuyên bố như tên cột trong SQL Server

Tôi có đơn giản select tuyên bố sau:

DECLARE @value varchar(10) 
SET @value = 'intStep' 

SELECT @value FROM dbo.tblBatchDetail 

tôi đã thử

SELECT CAST(@value AS varchar(10)) FROM dbo.tblBatchDetail 

và tất cả tôi nhận được một danh sách các intstep

HỎI: Tôi có thể vượt qua biến như tên cột để tuyên bố này? Hoặc cách tốt nhất để làm điều này

Tôi đang sử dụng SQL Server 2008 (9.0 RTM) là những gì

Đây sẽ là một thủ tục lưu trữ

Cảm ơn trước

+1

Tôi nghĩ đây là một câu hỏi này [Sử dụng SQL động để chỉ định tên cột bằng cách thêm biến vào sql đơn giản truy vấn] (http://stackoverflow.com/questions/7123659/using-dynamic-sql-to-specify-a-column-name-by-adding-a-variable-to-simple-sql-qu) – Spevy

Trả lời

26

Bạn không thể sử dụng tên biến để ràng buộc các cột hoặc các đối tượng hệ thống khác, bạn cần sql động

DECLARE @value varchar(10) 
SET @value = 'intStep' 
DECLARE @sqlText nvarchar(1000); 

SET @sqlText = N'SELECT ' + @value + ' FROM dbo.tblBatchDetail' 
Exec (@sqlText) 
+0

tôi nhận được lỗi này Msg 2812, Cấp 16, Tiểu bang 62, Dòng 6 Không thể tìm thấy thủ tục được lưu trữ 'SELECT intStep FROM dbo.tblBatchDetail'. –

+2

Xin lỗi quên dấu ngoặc đơn quanh @sqlText, câu trả lời cập nhật – Steve

+0

hoạt động ngay bây giờ cảm ơn –

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