Erstellen eines DB-link, wenn nicht innerhalb einer gespeicherten Prozedur

Ich versuche, code einer gespeicherten Prozedur in Oracle. Ich don ' T haben eine Tonne von Erfahrung mit ihm, und ich bin mit einem Problem. Das Ziel des Verfahrens ist es, die Daten aus einer DB und setzen es in ein anderes in einer anderen form. Ich habe die meisten Verfahren arbeiten, es scheint aber habe ich Probleme mit etwas, das scheint, wie es sollte einfach sein. Am Anfang des Codes, ich möchte überprüfen, um sicherzustellen, dass ein DB-link angelegt. Wenn nicht, dann möchte ich zum erstellen der db-link.

Dies ist, was ich innerhalb meiner Prozedur:

IF (select count(1) from ALL_DB_LINKS where db_link = 'DB_LINK.NAME.COM') = 0 THEN
      CREATE DATABASE LINK LINK_NAME
      CONNECT TO username IDENTIFIED BY password
      USING 'SID';
END IF;

Ich weiß, der link funktioniert, weil ich habe es getan, außerhalb dieser und habe eine Suche für Sie. Den Fehler bekomme ich wenn ich versuche zu kompilieren, ist dies:

Stießen auf das symbol "ERSTELLEN", wenn Sie erwarten eine der folgenden Optionen:

Ich habe all das getan, googeln ich denke, ich kann tun und ich kann nicht herausfinden, was ich falsch mache. Kopf ab, die andere Frage habe ich, ich habe auch versucht, es zu tun, indem Sie:

ERKLÄREN test_count Anzahl;

select count(1) into test_count from ALL_DB_LINKS where db_link = 'DB_LINK.NAME.COM';
 BEGIN
  IF test_count = 0 THEN
      CREATE DATABASE LINK LINK_NAME
      CONNECT TO username IDENTIFIED BY password
      USING 'SID';
  END IF;
END;

Aber ich bekomme den gleichen Fehler. Ich bin mir auch nicht sicher, wenn mit a beginnen inside a beginnen wird zu arbeiten. Jede Hilfe wäre eine große... naja, helfen.

  • Sie können nicht tun, DDL-direkt innerhalb einer Prozedur in Oracle. Sie können dies umgehen, indem mit EXECUTE IMMEDIATE.
  • Ich denke, Sie würde auch mit dynamischen SQL Abfragen über den link; ich kann das nicht testen jetzt, aber ich bin mir ziemlich sicher, das Verfahren wird nicht kompiliert, wenn Sie die Auswahl aus einem link, der nicht vorhanden ist in der statischen SQL-und für ungültig erklärt werden, wenn es später gelöscht. Erstellen von Objekten zur Laufzeit klingt wie etwas, möchten Sie vielleicht zu überdenken...
InformationsquelleAutor user940769 | 2013-04-26
Schreibe einen Kommentar