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;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Schrägstrich hat eine Bedeutung:
Wenn Sie Oracle verwenden Sie die "Mischung" der drei verschiedenen Grammatiken.
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.
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,
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.
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.