我正在使用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问题处理存储过程和参数然后语法有关,但我似乎无法找到解决方法
答案 0 :(得分:1)
实际上在SSIS中你不能把这样的表达放在源代码中。将其分成几部分:
使用EXEC dbo.udf_RiskManagementPlan
放置一个SQL任务块,设置输入/输出参数以获得结果(例如@SQLTaskResult
)
在积极结束时:将变量Source_SQL
设置为:
DTS.Variables["Source_SQL"].Value = 'Select Distinct Area From
'+DTS.Variables["SQLTaskResult"].Value+' Where Area is not Null And Area != ''
错误/无程序或其他错误/设置Source_SQL
与Else select Null As Area
类似的方式。双击右侧连接,然后将Value
设置为Falure
继续数据流 - 设置OLE DB以从OLE DB Source Editor