Zwei PLSQL-Anweisungen mit begin und end, gut laufen einzeln, aber nicht zusammen?
Einfach Fragen, wenn jemand helfen kann, mit diesem habe ich zwei PLSQL-Anweisungen zum ändern von Tabellen (hinzufügen zusätzlicher Felder) und Sie sind wie folgt:
-- Make GC_NAB field for Next Action By Dropdown
begin
if 'VARCHAR2' = 'NUMBER' and length('VARCHAR2')>0 and length('')>0 then
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NAB VARCHAR2(10, ))';
elsif ('VARCHAR2' = 'NUMBER' and length('VARCHAR2')>0 and length('')=0) or
'VARCHAR2' = 'VARCHAR2' then
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NAB VARCHAR2(10))';
else
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NAB VARCHAR2)';
end if;
commit;
end;
-- Make GC_NABID field for Next Action By Dropdown
begin
if 'NUMBER' = 'NUMBER' and length('NUMBER')>0 and length('')>0 then
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NABID NUMBER(, ))';
elsif ('NUMBER' = 'NUMBER' and length('NUMBER')>0 and length('')=0) or
'NUMBER' = 'VARCHAR2' then
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NABID NUMBER())';
else
execute immediate 'alter table "SERVICEMAIL6"."ETD_GUESTCARE" add(GC_NABID NUMBER)';
end if;
commit;
end;
Wenn ich diese beiden Abfragen getrennt, gibt es keine Probleme. Allerdings, wenn Sie zusammen ausgeführt werden, wie oben gezeigt, Oracle gibt mir eine Fehlermeldung, wenn es beginnt die zweite Aussage:
Error report:
ORA-06550: line 15, column 1:
PLS-00103: Encountered the symbol "BEGIN"
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Ich gehe davon aus, dass dies bedeutet, dass die erste Aussage ist nicht korrekt beenden... gibt es etwas, ich sollte zwischen den Aussagen, damit es richtig funktioniert?
InformationsquelleAutor Twiss | 2010-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oracle kann eine SQL-Anweisung oder einen PL/SQL anonymen block zu einem Zeitpunkt. (Im Gegensatz zu SQL Server, können mit Ausnahme einer charge zu einer Zeit.) Also, Sie haben ein paar Optionen.
Wickeln Sie die zwei anonyme Blöcke, die in einem anderen anonymen block:
Sagen, das Werkzeug, das Sie verwenden, um zu senden der PL/SQL, Oracle, senden die zwei-block getrennt. Wie Sie dies tun, wird sein spezifisches Werkzeug. In SQL*PLUS, ein
/
auf einer Linie von selbst wird sich dies bewerkstelligen:InformationsquelleAutor Shannon Severance
Ja, müssen Sie einen Schrägstrich
/
auf der Linie nach jedemend;
.InformationsquelleAutor Alex Poole
kann man erreichen, in zwei Arten
1) führen Sie die beiden Blöcke separat in pl/sql-Datei.
2) in Haupt-block können Sie zwei SGE-Blöcke auf diese Weise :
InformationsquelleAutor Ravichandra Aj