Oracle:スキーマの同義語を作成することは可能ですか?

はじめに

私はオラクルの初心者です、そして、私を助けるために地元のオラクルの教祖はいません。

これが私の問題/質問です。

私はいくつかのOracleインスタンスにリリースされなければならないいくつかのSQLスクリプトを持っています。
スクリプトはストアドプロシージャを作成します。
ストアドプロシージャが作成されるスキーマは、ストアドプロシージャが読み取っているテーブルを含むスキーマとは異なります。

異なるインスタンスでは、テーブルを含むスキーマは異なる名前を持ちます。

明らかに、スクリプトを編集して別のインスタンスに合わせてカスタマイズする必要はありません。

解決策は同義語を設定することであるかもしれないことが私に示唆されました。

各インスタンスでテーブルスキーマの同義語を定義し、その同義語を私のスクリプトで使用することは可能ですか?

毎回スクリプトを編集せずにこれを機能させる他の方法はありますか?

助けてくれてありがとう。

ベストアンサー
Oracleのバージョンを知るのに役立ちますが、as of 10g–No, you can’t make a synonym for a schemaです。
テーブルの同義語を作成できます。これにより、スクリプトでスキーマを指定できなくなります。しかし、同義語はすべてのインスタンスで同一である必要があります。

もう1つの選択肢は、スキーマ参照を変数に置き換えることです。そのため、スクリプトを実行すると、ユーザーはスキーマ名の入力を求められます。私はこのアプローチを好みます、なぜならそれは仕事が少ないからです。これはSQLPlusで機能する例です。

CREATE OR REPLACE &schema1..vw_my_view AS
  SELECT *
    FROM &&schema2..some_other_table

これの利点は、スクリプトを実行する人が、変数が見つかるたびにではなく、各変数に対して1回だけプロンプトが出されることです。だから、タイプミスに気をつけてね:)

転載記事の出典を記入してください: Oracle:スキーマの同義語を作成することは可能ですか? - コードログ