Dienstag, Dezember 10, 2019

Ist das slash-Zeichen in einer Oracle-PL/SQL-Skript einen Fehler?

Ich bin der Sortierung eine Reihe von SQL-Skripten für meine Firma geschrieben in Oracle PL/SQL. Ich kam über eine wesentliche Skript mit einem seltsam platziert Schrägstrich in der Nähe der Unterseite. Es wird geprüft, in CVS diese Weise. Ist dies eine Reine syntax-Fehler oder ist es eine Funktion zu haben ich bin mir nicht bewusst. Die etwas verwirrenden Drehbuch:

set serveroutput on size 2000;
--PL/SQL block to link ISSN in serial base on a company's ISSN text file
declare
cursor ItemCursor is
select issn is2 from web.obfuscated1 where issn is not null
union
select eissn is2 from web.obfuscated1 where eissn is not null;
cursor ItemCursor1(aIS varchar2) is
select obfuscated1_uid from web.obfuscated1 where group_num is null and issn in (
select distinct issn from web.obfuscated1 where issn = aIS or eissn = aIS
union
select distinct eissn from web.obfuscated1 where issn = aIS or eissn = aIS
)
union
select obfuscated1_uid from web.obfuscated1 where eissn in (
select distinct issn from web.obfuscated1 where issn = aIS or eissn = aIS
union
select distinct eissn from web.obfuscated1 where issn = aIS or eissn = aIS
);
cursor ItemCursor2(aIS9 varchar2) is
select obfuscated1_uid from web.obfuscated1 where issn in (
select distinct issn from web.obfuscated1 where issn = aIS9 or eissn = aIS9
union
select distinct eissn from web.obfuscated1 where issn = aIS9 or eissn = aIS9
) and group_num is null;
agroup      number(8);
processCount    number(8);
------------------------------------------------------
-- MAIN BLOCK -----------------------------------
-------------------------------------------------
begin
processCount := 0;
agroup := null;
for itemRec in ItemCursor loop
agroup := null;
begin
select group_num into agroup from web.obfuscated1 where issn in (
select distinct issn from web.obfuscated1 where issn = itemRec.is2 or eissn = itemRec.is2
union
select distinct eissn from web.obfuscated1 where issn = itemRec.is2 or eissn = itemRec.is2
) and group_num is not null and issn is not null and eissn is not null and rownum <= 1;
exception
when no_data_found then
agroup := null;
when others then
agroup := null;
end;
if agroup is not null then
for itemRec2 in ItemCursor2(itemRec.is2) loop
update web.obfuscated1 set group_num = agroup where obfuscated1_uid = itemRec2.obfuscated1_uid;
commit;
end loop;
else
processCount := processCount + 1;
for itemRec1 in ItemCursor1(itemRec.is2) loop
update web.obfuscated1 set group_num = processCount where obfuscated1_uid = itemRec1.obfuscated1_uid;
commit;
end loop;
commit;
end if;
end loop;
dbms_output.put_line('Total record read: ' || processCount);
exception
when others then
dbms_output.put_line('ORA' || sqlcode);
dbms_output.put_line(substr(sqlerrm, 1, 255));
dbms_output.put_line('ORA- Error during processing ' );
end;
/
exit;
InformationsquelleAutor danieltalsky | 2008-10-10

5 Kommentare

  1. 21

    Dem Schrägstrich hat eine Bedeutung:

    Führt den zuletzt ausgeführten
    SQL-Befehl oder eine PL/SQL-block, der
    gespeichert in der SQL-Puffer. Sie können
    geben Sie einen Schrägstrich (/) an den Befehl
    Eingabeaufforderung oder in einer Zeile Anzahl der Eingabeaufforderung ein
    multi-line-Befehl. Die slash-Befehl
    Funktionen ähnlich zu LAUFEN, aber tut
    nicht Liste den Befehl aus.

  2. 7

    Wenn Sie Oracle verwenden Sie die „Mischung“ der drei verschiedenen Grammatiken.

    • SQL
    • PL/SQL
    • sqlplus (command line client)

    sqlplus ausgeführt werden können/Prozess-SQL und PL/SQL-Anweisungen, indem Sie auf DB-server. Während sqlplus Befehle werden von sqlplus selbst.

    Den Strichpunkt „;“ ist nicht Teil des SQL-Grammatik und sqlplus erkennt es als das Ende der SQL-Anweisung. Während für PL/SQL-Sie ist Teil der Grammatik und muss explizit sagen, sqlplus, dass die Anweisung endet hier und sollte ausgeführt werden durch die Verwendung von slash.

    Den anderen sqlplus-Befehle „EXIT“, „DEFINIEREN“ „VARIABLE“ „PRINT“ „SET <irgendwas>“ (außer SET-ROLLE).

    Auf der anderen Seite die Kröte zum Beispiel erkennt das Ende des PL/SQL-block, wenn es sieht eine leere Zeile.

  3. 5

    den /am Ende ist zu sagen, der interpreter, der zum ausführen der geladenen Skript

    etwar Sie Art Material geben Sie dann „/“ und dem, was Sie gerade eingegeben wird ausgeführt,

  4. 3

    Sowohl den Schrägstrich und den „exit“ machen mich vermuten, sollen Sie zum ausführen dieses Skripts von SQLPLUS. Erhalten Sie möglicherweise eine Fehlermeldung, wenn Sie versuchen, senden Sie es zu Oracle in irgendeiner anderen Art und Weise. In diesem Fall, einfach loszuwerden, die beiden.

  5. 1

    Es ist nicht ein Fehler. Es führt das script aus.

    Ist es sinnvoll, beim verketten von verschiedenen Skripte, die zusammen in einer Datei und wollen jede einzelne Aufgabe auszuführen, bevor die nächste.

    ie Funktion Erstellen
    /
    Erstellen Sie die gespeicherte Prozedur verwendet die Funktion

    Ohne den Schrägstrich, die gespeicherte Prozedur kann erstellt werden mit Fehler oder kann nicht erstellt werden.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...