检查 UTD 参数是否在存储过程中有值
Checking if UTD parameter has values in stored procedure
我想检查具有某些用户定义 Table 类型的参数是否有值或为 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
用户定义的Table类型是
CREATE TYPE [dbo].[Word_List] AS TABLE(
[element] [varchar](512) NULL
)
使用
IF EXISTS(SELECT * FROM @Words)
没有
IF @Words IS NOT NULL
table 值参数将始终存在,不能像标量参数那样 NULL
。
如果您调用 exec [dbo].[SearchByWord]
而没有为参数传递任何内容,结果是 @Words
将为空 table。
我想检查具有某些用户定义 Table 类型的参数是否有值或为 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
用户定义的Table类型是
CREATE TYPE [dbo].[Word_List] AS TABLE(
[element] [varchar](512) NULL
)
使用
IF EXISTS(SELECT * FROM @Words)
没有
IF @Words IS NOT NULL
table 值参数将始终存在,不能像标量参数那样 NULL
。
如果您调用 exec [dbo].[SearchByWord]
而没有为参数传递任何内容,结果是 @Words
将为空 table。