Bagaimana cara memeriksa parameter bernilai tabel nol atau kosong?


9

Saya memiliki prosedur tersimpan (SS2k8) dengan beberapa parameter tabel-nilai yang kadang-kadang akan menjadi nol atau kosong. Saya telah melihat posting StackOverflow ini yang mengatakan bahwa TVPs null / kosong harus dihilangkan dari daftar parameter pemanggilan. Masalah saya adalah bahwa saya tidak dapat menemukan cara memeriksa apakah ada yang kosong atau nol di dalam prosedur tersimpan sebagai "JIKA (@tvp IS NULL)" gagal pada pembuatan prosedur dengan pesan 'Harus mendeklarasikan variabel skalar "@tvp"'. Apakah saya harus melakukan SELECT COUNT (*) pada TVP dan memeriksa nol?

Kutipan kode:

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
...

Jawaban:


14

Meja tidak bisa NULL, TVP juga tidak. Bagaimana Anda memeriksa apakah meja kosong? Anda tentu tidak mengatakannya 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

Parameter tabel bernilai tidak akan menjadi nol. Perlakukan itu lebih seperti sebuah meja dan @ aaraon Bertrand memukuliku sampai habis. Jadi ya, periksa apakah ada baris.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.