我对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中传递动态值并解决此问题。
答案 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任务就是这样的:
完成后,您应该能够在SQL语句中编写表达式,如下所示:
然后你应该在你的表中得到这个结果: