首页 > 解决方案 > 远程刷新 Oracle MV

问题描述

我正在尝试使用数据库链接名称刷新远程数据库上的 Oracle 物化视图。一旦我使用静态数据库链接名称,一切正常

DBMS_MVIEW.REFRESH@QA_LINK('tablename_mv','?')

当我想以多种方式将它(数据库链接名称)作为变量获取时

v_dblink :='qa';
DBMS_MVIEW.REFRESH@v_dblink('AVBROCHURESTATS','?');

总是收到类似的错误

ORA-06550: line 57, column 15:
PLS-00352: Unable to access another database 'V_DBLINK'
ORA-06550: line 57, column 15:
PLS-00201: identifier 'DBMS_MVIEW@V_DBLINK' must be declared.

请指教。

标签: oracle

解决方案


数据库链接名称必须始终明确;DDL 中没有变量替换。最好的办法是使用动态 SQL 即时构建执行字符串:

v_dblink := 'QA'
EXECUTE IMMEDIATE 'DBMS_MVIEW.REFRESH@' || v_dblink ||'(''AVBROCHURESTATS'',''?'')';

推荐阅读