【发布时间】:2013-10-11 04:03:32
【问题描述】:
我有一个这样的场景,我有一个看起来类似于这个的现有程序。
PROCEDURE A_DATA_B( p_ID IN SCHEMA1.TABLE1.ID%TYPE,
p_MATCH IN SCHEMA1.TABLE2.MATCH%TYPE,
p_STATUS IN SCHEMA1.TABLE3.STATUS%TYPE,
p_MSG IN SCHEMA1.TABLE1.MSG%TYPE,
The list goes on...
SCHEMA1 之前驻留在同一数据库中。现在这需要移动到不同服务器中的另一个数据库。但是模式名称会有所不同,但表名称和列名称保持不变。
所以我将程序更改为如下所示
PROCEDURE A_DATA_B( p_ID IN SCHEMA2.TABLE1.ID%TYPE,
p_MATCH IN SCHEMA2.TABLE2.MATCH%TYPE,
p_STATUS IN SCHEMA2.TABLE3.STATUS%TYPE,
p_MSG IN SCHEMA2.TABLE1.MSG%TYPE,
The list goes on..
但是当我编译时我得到了错误
PLS-00201:标识符“SCHEMA2.TABLE1”必须声明为 PL/SQL: 声明被忽略
我可以从这个错误中了解到 SCHEMA2 不在给出错误的数据库中。那么我该如何应对呢? 在使用此 SCHEMA2 的包正文中,后面跟着一个 @db_link。那么我可以利用那个 db_link 来解决这个问题吗?
通过查看一些文章,我了解到 SYNONYM 也可以使用。那么这是创建同义词的正确方法吗?
CREATE SYNONYM SCHEMA2 FOR SCHEMA2@db_link;
有人可以在这方面帮助我吗?
注意:我可能无法将 %type 转换为 varchar2 或数字等。
提前致谢..
【问题讨论】:
标签: oracle stored-procedures plsql database-schema