oracle - 远程刷新 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.
请指教。
解决方案
数据库链接名称必须始终明确;DDL 中没有变量替换。最好的办法是使用动态 SQL 即时构建执行字符串:
v_dblink := 'QA'
EXECUTE IMMEDIATE 'DBMS_MVIEW.REFRESH@' || v_dblink ||'(''AVBROCHURESTATS'',''?'')';
推荐阅读
- c# - Serilog + ElasticSearch 接收器连接问题(.net 核心)
- python - LED 条纹与 Teensy 和 Python
- mobile - Flutter 无法更改路由,因为 undefined name context with PopupMenuButton 如何解决?
- rpa - Automation Anywhere 无法在同名的 2 个选项卡之间切换
- hadoop - 如何回滚 hive 表中的截断数据
- java - 寻找设计模式或库
- python - Pyspark 访问和分解 json 的嵌套项
- python - Using apply function to Pandas dataframe
- google-analytics - 事件和目标完成不能一起工作?
- r - 锁定环境但不锁定 .Random.seed