我正在尝试在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
参数的数字的数组。我不需要按该字段过滤结果。我怎样才能在那里传递正确的值?
答案 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