5

データベース リンクを作成する前に、データベース リンクが既に存在するかどうかを確認する必要があります。どうやってやるの?

これで始まるSQLスクリプトを書いています:

DROP DATABASE LINK mydblink

次に、作成します。

CREATE DATABASE LINK mydblink
CONNECT TO testuser
IDENTIFIED BY mypswd
USING 'mypersonaldb'

もちろん、データベース リンクが存在しない場合、最初のステップでエラーが発生します。最初のステップを省略して先に進んで db リンクを作成すると、同じ名前で既に存在するというエラーが再び表示されます。

データベース リンクが既に存在するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

9
SELECT COUNT(1)
  FROM dba_objects -- user_objects
 WHERE object_type = 'DATABASE LINK'
   AND object_name = 'ARGUS51P';

例(未テスト):

declare
  l_link_cnt pls_integer := 0;
  l_sql varchar2(32767);
begin
  -- link creation sql (fill in details of how you want this created)
  l_sql := 'create public database link ...';

  select count(1)
  into l_link_cnt
  from dba_objects
  where object_type = 'DATABASE LINK'
  and object_name = 'SOME_LINK';

  -- create link if it doesn't exist yet
  if (l_link_cnt = 0) then
    -- create link 
    execute immediate l_sql;

  end if;

end;
于 2012-02-08T19:51:09.720 に答える
0

Oracle には、DROP または CREATE の前に存在をテストする方法がありません。(まあ、PL/SQL を書くこともできますが、それはおそらくその価値よりも面倒なことです。) Oracle スクリプトでは、スクリプトで DROP と CREATE の両方を単純に実行するのが非常に標準的です。DROP でエラーが発生した場合は、それで問題ありません。スクリプトの実行には影響しません。

-マーク

于 2012-02-08T20:02:22.207 に答える