【发布时间】:2016-03-07 21:46:01
【问题描述】:
假设我有三个模式:A、B 和 C。根据这个 Oracle 文档Syntax for Schema Objects and Parts in SQL Statements,引用对象的一般语法是:
schema.object
例如:
hr.departments
其中hr 是架构(所有者),departments 是对象(即表)。
我需要在 PL/SQL 块内的 SQL 查询中使用不同的模式名称。换句话说,我需要运行完全相同的 SQL 查询,但针对不同的架构(所有者)。
到目前为止,我有以下 PL/SQL 代码:
set serveroutput on size unlimited
set head off
set feedback off
set echo off
DECLARE
i_schema VARCHAR2(100);
BEGIN
FOR r IN (SELECT username FROM dba_users where username in ('A', 'B', 'C') order by 1)
LOOP
i_schema := r.owner || '.' || 'TABLE_NAME';
dbms_output.put_line(chr(10) || 'SCHEMA ===> ' || i_schema );
FOR t IN (SELECT * FROM i_schema order by 2)
LOOP
dbms_output.put_line(RPAD(t.COLUMN1,75) || '|' || t.COLUMN2);
END LOOP;
END LOOP;
END;
/
在第 14 行我也尝试了不同的符号:
FOR t IN (SELECT * FROM "r.username".TABLE_NAME ORDER BY 2)
但在这两种情况下我都得到以下错误:
PL/SQL: ORA-00942: table or view does not exist
提前感谢您收到的任何帮助。
【问题讨论】:
-
你的最终要求是什么?请详细说明。你要达到的目标