In diesem Abschnitt werden Tipps für die Entwicklung von Prozeduren gegeben.
Sie brauchen beim Schreiben von Prozeduren in Interactive SQL oder Sybase Central das Befehlstrennzeichen nicht zu ändern. Wenn Sie hingegen Prozeduren und Trigger aus einer anderen Anwendung ändern und testen, muss das Befehlstrennzeichen eventuell vom Semikolon auf ein anderes Zeichen gesetzt werden.
Jede Anweisung in der Prozedur endet mit einem Semikolon. Damit andere lesende Anwendungen die CREATE PROCEDURE-Anweisung syntaktisch analysieren können, muss als Befehlstrennzeichen ein anderes Zeichen als das Semikolon verwendet werden.
Wenn Sie eine Anwendung verwenden, für die das Befehlstrennzeichen geändert werden muss, benutzen Sie zwei Semikola (;;) oder ein Fragezeichen (?) als Befehlstrennzeichen, falls das System keine aus mehreren Zeichen zusammengesetzten Befehlstrennzeichen zulässt.
Jede Anweisung in der Prozedur sollte mit dem Befehlstrennzeichen beendet werden. Sie können zwar das Semikolon für die letzte Anweisung in einer Liste weglassen, aber es gehört zu einer sauberen Programmierungsweise, nach jeder Anweisung ein Semikolon zu setzen.
Die Anweisung CREATE PROCEDURE selbst enthält sowohl die RESULT-Angabe, als auch die zusammengesetzte Anweisung, die ihren Hauptteil ausmacht. Nach den Schlüsselwörtern BEGIN oder END oder nach der Klausel RESULT ist kein Semikolon erforderlich.
Wenn in einer Prozedur auf Tabellen Bezug genommen wird, sollten Sie vor den Tabellennamen immer den Namen des Eigentümers oder Erstellers der Tabelle setzen.
Wenn eine Prozedur auf eine Tabelle Bezug nimmt, benutzt sie die Gruppen-Mitgliedschaften des Tabellenerstellers zur Ermittlung
der Position von Tabellen, für die kein expliziter Eigentümername angegeben wurde. Beispiel: Wenn eine Prozedur für die Tabelle
Benutzer_1.Tabelle_B auf die Tabelle Tabelle_B Bezug nimmt und den Eigentümer der Tabelle_B nicht angibt, dann muss entweder
die Tabelle_B vom Benutzer_1 erstellt worden sein, oder der Benutzer_1 muss (direkt oder indirekt) ein Mitglied einer Gruppe
sein, die Eigentümer der Tabelle_B ist. Wenn beide Bedingungen nicht zutreffen, erscheint die Meldung Tabelle nicht gefunden
, wenn die Prozedur aufgerufen wird.
Sie können das Problem langer, vollqualifizierter Tabellennamen umgehen, indem Sie einen Korrelationsnamen verwenden. Korrelationsnamen werden unter FROM-Klausel beschrieben.
Wenn aus Prozeduren Datums- und Zeitangaben an die Datenbank gesendet werden, erfolgt dies in Form von Zeichenfolgen. Der Datumsteil der Zeichenfolge wird gemäß der aktuellen Einstellung der Datenbankoption "date_order" interpretiert. Da unterschiedliche Verbindungen diese Option auf unterschiedliche Werte setzen können, werden manche Zeichenfolgen vielleicht falsch in Datumswerte konvertiert, oder die Datenbank ist nicht in der Lage, die Zeichenfolge richtig als Datum zu lesen.
Sie sollten das eindeutige Datumsformat JJJJ-MM-TT oder JJJJ/MM/TT verwenden, wenn Sie in einer Prozedur Datumsangaben benutzen. Der Server interpretiert diese Zeichenfolgen eindeutig als Datumswerte, ganz gleich, wie die Datenbankoption "date_order" eingestellt wurde. Weitere Hinweise finden Sie unter Datentypen für Datum und Uhrzeit.
Eine Möglichkeit, die Eingabeargumente zu überprüfen, ist den Wert des Parameters auf dem Register "Meldungen" von Interactive SQL anzuzeigen, indem Sie die MESSAGE-Anweisung verwenden. Beispiel: Die folgende Prozedur zeigt einfach den Wert des Eingabeparameters var :
CREATE PROCEDURE message_test( IN var char(40) ) BEGIN MESSAGE var TO CLIENT; END; |
Sie können auch den Debugger benutzen, um zu prüfen, ob die Eingabeargumente der Prozedur richtig übergeben wurden. Weitere Hinweise finden Sie unter Lektion 2: In einer gespeicherten Prozedur nach Fehlern suchen.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |