【发布时间】:2021-10-03 01:34:50
【问题描述】:
我需要在块中使用同义词作为变量。我有 2 个不同的模式,上面有相同的表,并且工作在模式之间切换,使一个处于活动状态。现在我想编写一个块来检查哪个模式使用 ALL_SYNONYMS 处于活动状态,并将结果用作查询的一部分。 示例如下:
DECLARE
OWNER VARCHAR2(15);
BEGIN
SELECT TABLE_OWNER
INTO OWNER
FROM ALL_SYNONYMS
WHERE TABLE_NAME = 'MY_TABLE1';
SELECT *
FROM OWNER.MY_TABLE2 ;
END;
但是我得到 ORA-06550 表或视图不存在,当我运行查询本身时,我从 ALL_SYNONYMS 中输入值,它返回结果。
知道如何解决这个问题吗?
谢谢
【问题讨论】:
-
在不了解更多信息的情况下,我会说“修复”的方法是修复您的设计 - 不断在两种模式之间切换,因为“活动”与“非活动”听起来像是设计失败第一个订单。
-
您不能在 SQL 中使用“变量”对象名称,除非它是动态的。在您正在使用的版本的 pl/sql 手册中查找“立即执行”。
-
如果提供的任何答案解决了您的问题,请接受。这样做有助于未来的提问者有同样的问题,并从未回答的列表中删除问题。如果两者都没有解决您的问题,那么它们的不足之处在哪里。
标签: oracle plsql oracle12c plsqldeveloper