操作数类型冲突:NULL与SmallIntTable SQL Server不兼容

时间:2017-11-06 18:38:59

标签: sql sql-server stored-procedures sql-server-2012

我正在尝试在SQL Server中执行一个简单的存储过程。

USE [dbname]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[usp_storprocname]
        @ID = NULL,
        @SomeID = 123456,
        @AddressTypeIDs = NULL

SELECT  'Return Value' = @return_value
GO

我得到的是一个错误:

  

Msg 206,Level 16,State 2,Procedure usp_storprocname,Line 0 [Batch Start line 2]
  操作数类型冲突:NULL与SmallIntTable不兼容

根据我的理解,它希望得到某种带@AddressTypeIDs参数的数字的数组。我不需要按该字段过滤结果。我怎样才能在那里传递正确的值?

1 个答案:

答案 0 :(得分:3)

在执行存储过程之前,声明类型为SmallIntTable的变量。

如您所知,这将是一个包含单个列的表。

将您希望的任何值插入该表,然后在执行存储过程时,将该变量作为@AddressTypeIDs参数的值传递。

e.g。如下

USE [dbname]

GO

DECLARE @return_value INT
DECLARE @AddressTypeIDs dbo.SMALLINTCOL;

INSERT INTO @AddressTypeIDs
VALUES     (1);

EXEC @return_value = [dbo].[usp_storprocname]
  @ID = NULL,
  @SomeID = 123456,
  @AddressTypeIDs = @AddressTypeIDs

SELECT 'Return Value' = @return_value