PL/SQL: wie kann ich die Eingabeaufforderung für Benutzer-Eingabe in einer Prozedur?
Dies ist eine Frage über einen kleinen Teil von einem großen Projekt, das ich mache. Ich habe Folgendes versucht, aber ich bekomme nur die zwei Fehler aus:
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE HELLO AS
DECLARE
variable1 NUMBER(1);
variable2 CHAR(1);
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World');
variable1 := &please_enter_1_or_0;
variable2 := &please_enter_y_or_n;
END;
/
Fehler(2,5): PLS-00103: stießen auf das symbol "ERKLÄREN" als erwartet
einen der folgenden Schritte: starten Sie die Funktion pragma Verfahren Subtyp-Typ
aktuelle
cursor löschen vor externen Sprache Das symbol "starten" wurde
die Stelle "ERKLÄREN", um fortzufahren.Fehler(10,8): PLS-00103: stießen auf das symbol "end-of-file", wenn
erwartet eine der folgenden: ( begin case erklären Ende Ausnahme
exit for goto if loop mod null pragma erhöhen zurückzukehren, wählen Sie aktualisieren
während mit
<< weiterhin eine enge aktuellen löschen fetch-lock
legen Sie öffnen rollback savepoint set sql ausführen commit merge-forall
pipe purge
Wurden wir markscheme, wie unser code würde markiert werden, und für diesen Abschnitt die relevanten Kriterien wären:
"Tut Sie das Skript verwenden, ein Verfahren?" und
"Tut das Skript Eingabeaufforderung für richtig/falsch und dem team/der einzelnen und der Handhabung der zur Verfügung gestellten Daten richtig?".
Projekt kurze Zitate "Entwickeln Sie ein Verfahren, die Sie auffordert, für RICHTIG/FALSCH (&), dann aktualisiert Tabelle" (wobei Tabelle der name einer Tabelle
Den Zweck der Variablen wurde die Aktualisierung einer bestehenden Datensatz-Attribut. d.h., wenn der Benutzer wählte 1 und dann n update der null-Wert in den Datensatz 2. wenn es war 1 und y aktualisieren Sie dann auf 1, wenn 0, und y/n dann update auf 0
Eine weitere Sache, die & symbol akzeptiert wird nur von SQL*Plus, preprocesses die Aussage und macht die erforderlichen Substitutionen vor dem senden den code mit ersetzten Werten auf dem RDBMS. Fragen Sie Ihre Kollegen, um Ihnen zu helfen auf der Suche nach Informationen über Sie. Auf dieser Seite des server-Programmierung kann ganz hässliche Gesicht von einem Anfänger. Daran, dass die PL/SQL-block begann, gibt es keine einfache Möglichkeiten, um zu interagieren, und es ist immer besser, zu vermeiden, es zu tun.
InformationsquelleAutor user3120554 | 2015-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
PL/SQL ist eine Sprache zum schreiben von autonomen Programmen. Es ist nicht ausgelegt für die Nutzer-Interaktivität. Input-Werte als Parameter übergeben werden.
Also das Programm sollte wie folgt Aussehen
Hinweis: es gibt keine Notwendigkeit ERKLÄREN, die mit einer benannten Verfahren. Der Abschnitt zwischen AS und BEGIN ist um Variablen zu deklarieren, wie ich es getan habe mit
l_salutation
.Können Sie Werte für die Parameter beim Aufruf des Programms. In SQL*Plus, es würde funktionieren wie dieser:
exec HELLO (&p1, &p2)
in meinem Fall ansonsten gab es Probleme mit der Bindung.InformationsquelleAutor APC
Können Sie nicht direkt empfangen von Nachrichten vom client in einem PL/SQL-Prozedur oder-Paket.
Das beste, was Sie tun können, um zu emulieren, dies ist die Schnittstelle mit der Tabelle von Daten, und Benutzer, die Daten in die Tabelle eingefügt und darauf reagieren, oder verwenden Sie die Erweiterte Queuing - (die Beträge, die ziemlich viel die gleiche Sache).
Alternativ akzeptieren Benutzereingaben als Parameter, wenn die Prozedur aufgerufen wird.
Sie können nicht nur die Interaktion mit dem Benutzer auffordern, aber Sie können die Parameter akzeptieren, als Teil der Prozedur-Aufruf , damit die Prozedur aufgerufen werden würde, wie: Hallo( 1 , 'Y' )
InformationsquelleAutor David Aldridge
Dieses Stück code funktioniert nur in der SQL*Plus und kann nicht verwendet werden, um eine gespeicherte Prozedur!!!
Verstand der Unterschied in der letzten Aussage, wo die Letzte substitution variable angegeben wird, in eine Zeichenfolge ordnungsgemäß akzeptiert durch die PL/SQL-syntax. Sowieso, wie ich Euch im letzten Kommentar zu deiner Frage das ist keine Benutzer-Interaktion, sondern nur das Ergebnis einer Anweisung der Vorverarbeitung. Jedes mal, wenn Sie die Eingabe unterschiedlicher Werte das RDBMS führt eine unterschiedliche source-code.
Wahrscheinlich Ihre Anforderung ein "Verfahren" nicht gedacht, um eine GESPEICHERTE Prozedur verwenden(das ist unmöglich, so zu tun), aber Sie soll ein SQL*Plus-Skript, Erklärungen zu bitten.
InformationsquelleAutor Alessandro Rossi
Können Sie einfach Entfernen Sie die erklären, diesen zu beheben, ora-Fehler
InformationsquelleAutor Jeremy