Wie Sie das replace
Schlüsselwort verwenden es keine Notwendigkeit, zu prüfen, ob das Synonym zuerst existiert. Sie überschreiben das Synonym, das mit dem vorherigen Namen existiert.
Der einzige Grund, vorsichtig zu sein, mit replace
ist, wenn Sie ein anderes Synonym mit dem gleichen Namen haben könnte. Wenn Ihre Datenbank gut organisiert ist, sollte dies nicht passieren. Sie sollten immer wissen, was alle Ihre Objekte sind und wo die Synonyme zeigen.
Wenn Sie jedoch wollen, um dort ein paar Optionen sind:
- entfernen
replace
. Die Anweisung wird einen Fehler ausgeben, wenn das Synonym bereits existiert und nicht überschrieben wird.
Abfrage der Daten-Wörterbuch, wie Sie in mehreren Schemas sind scheint all_synonyms
wie die beste Wette.
select *
from all_synonyms
where owner = 'ETKS_PR_RW'
and synonym_name = 'SQ_CLDOS_ATCHMNT_ID';
Wenn Sie diese in einem einzigen Block kombinieren möchten, dann können Sie etwas tun:
declare
l_exists number;
begin
-- check whether the synonym exists
select 1
into l_exists
from all_synonyms
where owner = 'ETKS_PR_RW'
and synonym_name = 'SQ_CLDOS_ATCHMNT_ID';
-- an error gets raise if it doesn-t.
exception when no_data_found then
-- DDL has to be done inside execute immediate in a block.
execute immediate 'CREATE OR REPLACE SYNONYM ETKS_PR_RW.SQ_CLDOS_ATCHMNT_ID
FOR CLDOS_ONLINE_DBA.SQ_CLDOS_ATCHMNT_ID';
end;
/
auf einem leicht trennen nicht bitte nicht Zitat Ihre Objektnamen tun. Oracle kann Objekte verkapselt haben, aber es ist sehr, sehr selten den Aufwand wert. Alle Objekte werden automatisch in Großbuchstaben, so dass Sie nicht die "
benötigen.
können Sie mir sagen, Syntax für die Option 2. Dies ist, was ich suche. –
hier ein Führungs Beispiel http://snipplr.com/view/39190/create-synonyms/ bin sicher, das ist, was Sie wollen, ich mir Hoffnung geben Antwort thankx im Voraus – shareef
Heu akzeptieren bro dies komplexer ist und was ich denke, es wird Kopiere alle Objekte. –