Eu tenho um procedimento armazenado (SS2k8) com alguns parâmetros com valor de tabela que às vezes serão nulos ou vazios. Eu vi esse post StackOverflow que diz que TVPs nulos / vazios devem ser simplesmente omitidos da lista de parâmetros de chamada. Meu problema é que não consigo descobrir como procurar vazio ou nulo dentro do procedimento armazenado, pois "IF (@tvp IS NULL)" falha na criação do procedimento com a mensagem 'Deve declarar a variável escalar "@tvp"'. Preciso fazer uma CONTAGEM SELECIONADA (*) na TVP e verificar se há zero?
Trecho do código:
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
...