このようなシナリオがありました。これに似た既存の手順があります。
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 や数値などに変換できない場合があります。
前もって感謝します..