2010-07-14 37 views
5

Có thể bao gồm một tập hợp các giá trị 'không đổi' trong một thủ tục lưu trữ TSQL không? Tôi có một tình huống mà tôi đang sử dụng một trường số nguyên để lưu trữ các giá trị bit và tôi có một tập hợp nhỏ các giá trị 'liên tục' mà tôi sử dụng để chèn/chọn chống lại lĩnh vực màHằng số và Bao gồm các tệp trong TSQL

DECLARE @CostsCalculated int = 32 
DECLARE @AggregatedCalculated int = 64 

--Set CostCalculated bit 
update MyTable set DataStatus = ISNULL(DataStatus, 0) | @CostsCalculated 
where Id = 10 

--How many rows have that bit set 
select count(*) from MyTable where ISNULL(DataStatus, 0) & @CostsCalculated = @CostsCalculated 

tôi có thể lặp lại cùng một bộ TUYÊN BỐ ở đầu mỗi SP nhưng tôi muốn bao gồm mã, có nghĩa là tôi có thể thay đổi ở một nơi khi các giá trị bit mới được thêm vào.

+0

Bạn luôn có thể lưu trữ các hằng số trong bảng. –

+1

Tôi vẫn phải cắt/dán mã tấm nồi hơi vào tất cả các SP của tôi hoặc tham gia vào bảng đó mà sẽ là một hit hiệu suất khó chịu. – MrTelly

Trả lời

2

Tắt đầu của tôi, bạn không thể bao gồm các hằng số như vậy.

Có bao nhiêu hằng số bạn đang nói đến? Thay vì khai báo hằng số, tôi cho rằng bạn có thể tạo ra một hàm cho mỗi hằng số bạn muốn, và gọi hàm thay vì @CostsCalculated, nhưng tôi không chắc nó thực tế như thế nào.

Cách khác, lưu trữ các giá trị trong một bảng được chỉ định.

+0

+1: Không có bất kỳ chức năng nào để hỗ trợ các hằng số trong SQL Server - phải qua chức năng hoặc bảng. Những thứ như thế này là lý do tại sao các gói Oracle rất tuyệt vời, và lý do tại sao không có cơ sở dữ liệu nào khác cung cấp chức năng tương tự. –

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