1

我使用 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 问题处理存储过程和参数有关,然后是语法,但我似乎找不到解决方法

4

1 回答 1

1

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

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

    控制流

  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类似方式。双击右边的连接,设置ValueFalure

  4. 继续数据流 - 将 OLE DB 设置为从变量中动态读取源 sqlOLE DB Source Editor

于 2013-08-01T08:25:50.307 回答