我有一个这样的场景,我有一个与此类似的现有程序。
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 或数字等。
提前致谢..