已经检查过这篇文章:SSIS 和向 Oracle 发送带有日期的查询
我正在使用以下线程 SSIS 的变量查询-使用 Attunity Oracle 数据源在 Oracle 查询中使用参数
使用的工具:VS-2019 数据流:MS Oracle 源(用于 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 String 类型的参数。我在本地机器上试过这个并且能够将值传递给 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 <= 5 and NVL(CREATE_DATE,UPDATE_DATE) = '2020-05-09' 这行得通。但是价值是硬编码的。尝试2:
"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 云提供一些指导。谢谢。