Làm cách nào để kiểm tra tham số có giá trị bảng rỗng hoặc trống?


9

Tôi có một thủ tục được lưu trữ (SS2k8) với một vài tham số có giá trị bảng đôi khi sẽ là null hoặc trống. Tôi đã thấy bài đăng StackOverflow này nói rằng các TVP null / rỗng nên được bỏ qua khỏi danh sách tham số gọi. Vấn đề của tôi là tôi không thể tìm ra cách kiểm tra trống hoặc null bên trong thủ tục được lưu trữ là "IF (@tvp IS NULL)" không thành công khi tạo thủ tục với thông báo 'Phải khai báo biến vô hướng "@tvp"'. Tôi có phải thực hiện CHỌN COUNT (*) trên TVP và kiểm tra số không?

Đoạn trích:

CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS

IF (@tvp IS NOT NULL) -- doesn't work
BEGIN
  -- lots of expensive processing
END
ELSE
BEGIN
  -- a little bit of cheap processing
END
...

Câu trả lời:


14

Một bảng không thể NULL, TVP cũng không thể. Làm thế nào để bạn kiểm tra nếu một bảng trống? Bạn chắc chắn không nói IF Sales.SalesOrderHeader IS NULL. :-)

IF EXISTS (SELECT 1 FROM @tvp)
BEGIN
  -- lots of expensive processing
END
ELSE
BEGIN
  -- a little bit of cheap processing
END
...

3

Tham số có giá trị bảng sẽ không có giá trị. Đối xử với nó giống như một cái bàn và @aaraon Bertrand đánh tôi với cú đấm. Vì vậy, có, kiểm tra xem có hàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.