Visual studio 2015 通过带有多值参数的OLEDB源调用SSIS中的存储过程

Visual studio 2015 通过带有多值参数的OLEDB源调用SSIS中的存储过程,visual-studio-2015,ssis,sql-server-data-tools,Visual Studio 2015,Ssis,Sql Server Data Tools,我试图调用一个具有3个输入参数的存储过程。存储的进程有多个联接,填充多个临时表等。我需要从一个数据库调用此SP,并在SQL server中填充另一个数据库表。我正在尝试使用OLEDB源SQL命令 我还在SSIS包中创建了3个变量(相同的变量在存储的proc参数中) 第一个参数是日期字段获取特定的date数据 第二个参数product type,它有20个不同的可能值(我们希望为一个日期提取所有产品类型) 第三个-仅为1或0的值。 我还需要将列从SP映射到目标表。存储过程中不需要某些列,应该进行映

我试图调用一个具有3个输入参数的存储过程。存储的进程有多个联接,填充多个临时表等。我需要从一个数据库调用此SP,并在SQL server中填充另一个数据库表。我正在尝试使用OLEDB源SQL命令

我还在SSIS包中创建了3个变量(相同的变量在存储的proc参数中)

第一个参数是日期字段获取特定的
date
数据 第二个参数product type,它有20个不同的可能值(我们希望为一个日期提取所有产品类型) 第三个-仅为1或0的值。 我还需要将列从SP映射到目标表。存储过程中不需要某些列,应该进行映射。我得到了错误

异常HRESULT:0Xc020204A OLEDB记录可用。电子源 Microsoft SQL Server本机客户端11.0 HResult-0*80004005

数据流任务(OLEDB源)出错-无法检索列 来自数据源的信息。确保您的目标表在 数据库可用。需要帮助将数据从此存储过程加载到 目的地表

声明
@日期字符串,
@productType字符串,
@标志int32

set@date=?
设置@productType=?
设置@Flag=?

Exec getDetails@date,productType,@flag


请确保按相同顺序映射变量

谢谢您的回复。 步骤1 实际上,我使用了另一种方法来创建另一个存储过程,并调用了另一个sp(称为sp不能修改)。创建临时表,将被调用sp的结果插入临时表,并将临时结果集填充到目标表中。 -将可能的值传递给productType,标志传递值为1,日期选择为max 步骤2-创建SSIS包,用于执行sql任务以调用存储过程


它起作用了

您是否尝试对参数进行硬编码,以查看变量本身是否有问题?在ssms中,我能够以exec getDetails'20180705','apple;橙色芒果;梨;cherry',我不想在这里添加所有20个值。如何将所有可能的20个值分配给ssis中的参数?你应该用逗号或分号分开吗?如果我重新调用,则不需要单引号。当您在ssis中对它们进行硬编码时会怎么样?我将尝试硬编码所有可能的值,并在谷歌上搜索您的错误,这是第一个响应:。您的SP可能不返回列,或者返回的列不一致。如果SP中有几个不同的
选择
语句,或者从临时表中选择。这可能就是问题所在。请澄清
     @date string
     @productType string
     @Flag int32

      Exec getDetails
       ?,?,?

also mapped parameters tab
Parameter-Date variables:user::Date
ProductType-variables:user::ProductType
Flag -variables:user::Flag