我想检查具有某些用户定义的表类型的参数是否具有值或是否为NULL但是我收到以下错误
Msg 137, Level 16, State 1, Procedure SearchByWord, Line 63 [Batch Start Line 7]
Must declare the scalar variable "@Words".
存储过程如下(仅相关部分)
CREATE PROCEDURE [dbo].[SearchByWord]
(
@Words Word_List READONLY
)
AS
BEGIN
SET NOCOUNT ON;
-- some DECLARE and SET
IF @Words IS NOT NULL
BEGIN
-- stuff
END
-- more stuff
END
用户定义的表格类型是
CREATE TYPE [dbo].[Word_List] AS TABLE(
[element] [varchar](512) NULL
)
答案 0 :(得分:3)
使用
IF EXISTS(SELECT * FROM @Words)
不
IF @Words IS NOT NULL
表值参数将始终存在,并且不能像标量参数那样NULL
。
如果在没有传递任何参数的情况下调用exec [dbo].[SearchByWord]
,结果是@Words
将为空表。