SSIS 2008如何使用EXEC

时间:2013-08-01 08:06:03

标签: sql ssis

我正在使用SSIS 2008 我想尝试运行以下SQL代码:

declare @test nvarchar(100)
set @test = 'Select Distinct Area From dbo.udf_RiskManagementPlan('') Where Area   is not Null And Area   != ''';

if exists (select object_id from sys.columns where object_id = object_id('dbo.udf_RiskManagementPlan') and name = 'Area')  

exec sp_executesql @test

Else select Null As Area 

它在SQL管理工作室中运行良好,但是当我尝试将它放在OLEDB源代码中时,我一直收到有关语法的错误

我尝试将整个代码放在一个变量值中,然后调用它仍然会产生相同的语法错误

我觉得这更多地与SSIS问题处理存储过程和参数然后语法有关,但我似乎无法找到解决方法

1 个答案:

答案 0 :(得分:1)

实际上在SSIS中你不能把这样的表达放在源代码中。将其分成几部分:

  1. 使用EXEC dbo.udf_RiskManagementPlan放置一个SQL任务块,设置输入/输出参数以获得结果(例如@SQLTaskResult

    Control flow

  2. 在积极结束时:将变量Source_SQL设置为: DTS.Variables["Source_SQL"].Value = 'Select Distinct Area From '+DTS.Variables["SQLTaskResult"].Value+' Where Area is not Null And Area != ''

  3. 错误/无程序或其他错误/设置Source_SQLElse select Null As Area类似的方式。双击右侧连接,然后将Value设置为Falure

  4. 继续数据流 - 设置OLE DB以从OLE DB Source Editor

  5. 中的变量动态读取源sql