【发布时间】: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 云提供一些指导。 谢谢。
【问题讨论】: