gpt4 book ai didi

oracle - 如何通过数据库链接远程远程 sysdate 结果?

转载 作者:行者123 更新时间:2023-12-04 21:15:16 25 4
gpt4 key购买 nike

我正在从 Oracle 到 Sybase 服务器的数据库链接上运行查询。

其中 where 子句是对日期的限制,我希望它与 sysdate 相关联,因此如下所示:

select * from some_remote_view where some_numeric_key = 1 and some_date > sysdate+2



问题是,当我解释计划时,只有条件 some_numeric_key = 1 出现在远程到 sybase 服务器的实际 sql 中。 Oracle 期望自己执行日期过滤器。

这导致了性能噩梦 - 我需要远程处理该日期过滤器以使该查询快速工作

即使我尝试将 sysdate 转换为这样的字符字符串:
to_char(sysdate-2,'YYYY-MM-DD')

它仍然没有远程它。

我可以做些什么来让 Oracle 通过 db 链接远程这个日期过滤器到 Sybase?

最佳答案

在 Oracle 和其他平台之间进行集成时,我经常遇到这个问题,而不仅仅是 SYSDATE。但也有其他非标准功能。

有两种方法可以解决这个问题,根据我的经验,第一种是最可靠的。

首先,您可以使用您需要的过滤器在远程数据库上创建一个 View ,然后在 Oracle 端,您只需从新 View 中进行选择,无需其他过滤器。

其次,如果不允许在远程端创建对象,请尝试在 Oracle SELECT 中使用绑定(bind)变量(具有正确的数据类型!)声明,例如:

declare
v_some_date constant date := sysdate + 2;
begin
insert into oracle_table (...)
select ...
from remote_table@db_link t
where t.some_numeric_key = 1
and t.some_date > v_some_date;

commit;
end;
/

关于oracle - 如何通过数据库链接远程远程 sysdate 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com