加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 如何跨数据库链接远程连接sysdate结果?

发布时间:2020-12-12 13:15:51 所属栏目:百科 来源:网络整理
导读:我正在通过Oracle的Sybase服务器的数据库链接运行查询. 在它的where子句是对日期的限制,我希望它绑定到sysdate,所以像这样: select * from some_remote_view where some_numeric_key = 1 and some_date sysdate+2 问题是,当我解释计划时,只有条件some_numer
我正在通过Oracle的Sybase服务器的数据库链接运行查询.

在它的where子句是对日期的限制,我希望它绑定到sysdate,所以像这样:

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

问题是,当我解释计划时,只有条件some_numeric_key = 1出现在实际的sql中才会远程连接到sybase服务器.甲骨文希望能够执行日期过滤器.

这导致性能噩梦 – 我需要远程日期过滤器以使此查询快速运行

即使我尝试将sysdate强制转换为charcater字符串,如下所示:
TO_CHAR(SYSDATE-2,‘YYYY-MM-DD’)

它仍然没有远程.

有什么办法可以让Oracle通过db链接到Sybase远程过滤这个日期过滤器吗?

解决方法

在Oracle和其他平台之间进行集成我经常遇到这个问题,不仅是SYSDATE,还有其他非标准函数.

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

首先,您可以使用所需的过滤器在远程数据库上创建视图,然后在Oracle端,您只需从新视图中选择,而无需其他过滤器.

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

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;
/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读