SSIS 向 Oracle 云 VS-2019 和 MS Oracle 源发送带有数据参数的查询
Posted
技术标签:
【中文标题】SSIS 向 Oracle 云 VS-2019 和 MS Oracle 源发送带有数据参数的查询【英文标题】:SSIS sending query with data parameter to Oracle cloud VS-2019 and MS Oracle Source 【发布时间】:2020-05-14 21:32:40 【问题描述】:已查看此帖子:SSIS and sending query with date to Oracle
我在下面的线程中使用变量查询 SSIS - Using parameters in Oracle Query using Attunity Oracle Datasource
使用的工具:VS-2019 数据流:MS Oracle Source(适用于 VS-2019) 我的来源是雪花云。我成功地从表中获取最大日期并存储在对象类型变量中(命名为:-@var_Snowflake_Table_maxDate)。然后我使用脚本任务将值转换为字符串类型。 脚本任务的代码是:
public void Main()
OleDbDataAdapter A = new OleDbDataAdapter(); //using System.Data.OleDb; ADDED above in NAMESPACES
System.Data.DataTable dt = new System.Data.DataTable();
A.Fill(dt, Dts.Variables["User::var_Snowflake_Table_maxDate"].Value);
foreach (DataRow row in dt.Rows)
object[] array = row.ItemArray;
Dts.Variables["User::var_CreateDate"].Value = array[0].ToString();
Dts.TaskResult = (int)ScriptResults.Success;
这会正确设置我的 @var_CreateDate 字符串类型的参数。我在本地机器上尝试了这个,并且能够将值传递给 sql-server 的本机实例(是的,不是 oracle)。只是为了从脚本任务中测试我的参数。 最后:我正在使用 VS-2019 的 MS Oracle Source 将值传递到 Oracle 云服务器。我尝试过的示例查询
"select * from Table where rownum <= 5 and NVL(CREATE_DATE,UPDATE_DATE) = " +"'05-09-2020'"
::::evals to:::: select * from related.awd_acct_activity where rownum
"select * from table where rownum <= 50 and
NVL(CREATE_DATE,UPDATE_DATE) = " +"'@[User::var_CreateDate]'"
尝试3:
"select * from table where rownum <= 50 and
NVL(CREATE_DATE,UPDATE_DATE) = to_date(" +"'@[User::var_CreateDate]'"+")"
尝试4:
"select * from table where rownum <= 50 and
NVL(CREATE_DATE,UPDATE_DATE) = to_date(" +"'@[User::var_CreateDate]'"+",'YYYY-MM-DD')"
尝试 2 到 4 评估均未正确。我能否就如何将此参数传递给 Oracle 云提供一些指导。 谢谢。
【问题讨论】:
【参考方案1】:我假设您正在尝试找出一个变量的语法,该变量将保存查询文本。你可以试试这样的:
"select * from table where rownum <= 50 and
NVL(CREATE_DATE,UPDATE_DATE) = to_date(" + "'" + @[User::var_CreateDate] + "'" + ",'YYYY-MM-DD')"
【讨论】:
信不信由你,另一位同事分享了有效的方法。在脚本任务中,我必须添加额外的“'”(单引号)来封装日期。然后在 SSIS 中,我必须创建第三个变量来键入字符串并分配变量 2 的值(来自脚本任务的单引号)。将此第三个变量分配给查询。并且有效。以上是关于SSIS 向 Oracle 云 VS-2019 和 MS Oracle 源发送带有数据参数的查询的主要内容,如果未能解决你的问题,请参考以下文章