我正在使用execute sql task调用Oracle存储过程,我想将参数传递给oracle存储过程
查询内部执行sql任务: -
BEGIN
PKG_METRICS.GET_STUDY_METRIC(@myparameter, 'FIRST_SITE_SELECTED', 'LAST_SITE_SELECTED', 6, null,'SITE');
END;
请告诉我你的意见......
答案 0 :(得分:0)
你应该去SQL Task中的表达式,
然后将表达式添加到SqlStatementSource
并将此代码放在对话框窗口中:
"BEGIN
PKG_METRICS.GET_STUDY_METRIC("+
的 @var_myparameter 强> +", 'FIRST_SITE_SELECTED', 'LAST_SITE_SELECTED', 6, null,'SITE');
END;"
在此之前,您应该添加字符串变量 @var_myparameter 。
答案 1 :(得分:0)
您可以按照上面的建议将sql表达式构建为字符串,但如果它们是管道中ole db命令的输入,您也可以将参数传递给Oracle。创建OLE DB命令块。在组件属性中输入sql和place?标记参数应该在哪里。接下来转到输入和输出属性。展开OLE DB命令输入并为需要传递的每个参数添加外部列。从零开始从上到下排序MappedColumnId选项卡。将它们映射到列映射选项卡上的输入。
如果您的参数只是SSIS中的参数而不是管道中的参数,您可以使用简单的派生列将其添加到管道中。您也可以使用您喜欢的oracle访问dll从脚本组件执行proc。
没有完美的选择,但有办法做到这一点!
答案 2 :(得分:-1)
除 chrisPfeif518 外: 对于Oracle(在我的例子中),在OLE DB Command任务中,我使用了语法:
{call ... }
对于你的情况应该是:
{call PKG_METRICS.GET_STUDY_METRIC(?, ?, ?, ?, ?,?)}