如何在ssis存储过程

时间:2017-08-24 06:36:38

标签: sql-server-2008 ssis-2008

我对SSIS有疑问:请告诉我如何使用SSIS包将存储过程结果加载到表中。

我想将存储过程的结果加载到另一个表中。

我曾尝试ExecuteSQL这样的任务:

insert into abctest123([lat], [long], [city], [state], [add])

    EXEC GECODE_U 
         @Address = '1234 N. Main Street',
         @City = 'Santa Ana',
         @State = 'CA'

此查询在SSIS中使用Execute SQL Task正常工作。

地址,城市和州的价值会经常变化。因此,我创建了变量来动态地将值传递给SSIS。

我试过这样 - 我创建了3个变量地址,城市,州:

insert into abctest123([lat], [long], [city], [state], [add])
    EXEC GECODE_U  ? , ? ,? 

之后在使用参数映射的Execute SQL中,我分配了创建的3个变量,但是我收到了这个错误:

  

[执行SQL任务]错误:执行查询"插入abctest123([lat]         ,[长] ......"
  失败,出现以下错误:
  ' @ P2'附近语法错误   可能的失败原因:查询问题," ResultSet"属性设置不正确,参数设置不正确或连接未正确建立。

请告诉我如何在SSIS中传递动态值并解决此问题。

2 个答案:

答案 0 :(得分:0)

在“执行SQL任务编辑器”中 - 将“结果集”属性设置为“完整结果集” 然后, 在结果集选项卡中 - 相应地将结果分配给一个/多个变量

答案 1 :(得分:0)

您需要将它们添加到Execute SQL Task中的选项参数映射中。

你可以这样做:

首先创建表格:

CREATE TABLE [dbo].[testtest](
[Adress] [nvarchar](50) NULL,
[City] [nvarchar](50) NULL,
[State] [nvarchar](50) NULL
) ON [PRIMARY]

然后创建你的SP:

CREATE PROCEDURE SP_NAME
 @Adress nvarchar(50), @City nvarchar(50), @State nvarchar(50) AS

BEGIN

insert into dbo.Testtest (Adress,City,[State])
select @Adress,@City,@State 
END

然后使用执行SQL任务创建SSIS包,并创建名为Adress,City,State的3个变量。 接下来你的执行SQL任务就是这样的:

enter image description here

完成后,您应该能够在SQL语句中编写表达式,如下所示:

enter image description here

然后你应该在你的表中得到这个结果:

enter image description here