Kommt es bei der Ausführung des Codes zu einem (oder mehreren) Fehlern, so wird der Fehlertext auf dieser Variablen im Auftrag gespeichert. Ist kein Fehler aufgetreten, so ist der Inhalt der Variablen leer.
If during the execution of the code one (or more) errors occurs, the error-text will be stored on this variable in the order. If no error occurs then the contents of the variable will remain empty.
Die Ausgabe des Prozesses nach STDOUT wird in diesem Parameter gespeichert.
The output of the process into STDOUT is reported as the value of this parameter.
Es ist möglich, im Feld COMMAND mehrere Kommandos anzugeben, die der Reihe nach ausgeführt werden. Diese müssen durch ein Semikolon und einen darauf folgenden Zeilenwechsel (Newline) getrennt sein. Die Datenbank-Kommandos können parameterisiert werden. Dazu ist an beliebiger Stelle im Kommando eine Variable in der Form §{param} einzufügen. Diese wird dann vor der Ausführung durch den Wert des Auftragsparameters mit dem Namen [param] ersetzt.
Alternativ kann als Wert des Parameters der Name einer Datei angegeben werden, die das auszuführende Script enthält.
It is possible to define more than one instruction in the COMMAND field. Such instructions are then carried out in the order in which they are written and must be separated by a semicolon and a subsequent new line. Parameters can be replaced in database commands. This is done by the addition of a variable in the form §{param} at any given point in a command. This variable is then given the value of the instruction parameter with the name [param] before execution.
Alternatively, the name of a file can be specified that contains the script.
Die Ausgabe des Skripts, normalerweise STDOUT, wird mit dem hier angegebenen Ausdruck parsiert und die Treffer als Auftrags-Parameter zu Verfügung gestellt.
Der 'prompt'-Befehl im SQL*Plus Code liefert die Ausgabe. Hier ein Beispiel:
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER OSERROR EXIT FAILURE prompt ready; prompt foo = bar; prompt SET hello IS world; exit;
Die 'dbms_output.put_line()'-Funktion im PL/SQL liefert die Ausgabe. Hier ein Beispiel:
begin dbms_output.put_line('ready'); dbms_output.put_line('Set hello IS world'); dbms_output.put_line('foo = bar'); end;
The script output will parse with this regular expression. The hits are available as order parameters.
The 'prompt' in SQL*Plus writes the output. Example:
WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER OSERROR EXIT FAILURE prompt ready; prompt foo = bar; prompt SET hello IS world; exit;
The 'dbms_output.put_line()' function in PL/SQL writes the output. Example:
begin dbms_output.put_line('ready'); dbms_output.put_line('Set hello IS world'); dbms_output.put_line('foo = bar'); end;
Some remarks on regular expression, used in JobScheduler and YADE.
A regular expression is not a wildcard . To get an impression of the differences one have a look on the meaning of the wildcard *.txt, which will select all filenames with the filename-extension ".txt". A regular expression to match, e.g. works the same way, this "wildcard" must look like "^.*\.txt$". That looks a little bit strange but it is much more flexible and powerfull on filtering filenames than the concept of wildcards, if one want to filter more complex names or pattern.
The general syntax of an regular expression, also referred to as regex or regexp, is described here. It is different to other RegExp definitions, e.g. as for Perl.
For further information on regular expressions see java.util.regex.Pattern
As an extension of regular expression the [date:] variable is supported. Using this feature it is possible to create a regexp, which is depending on the date with is defined in the date-format.
If you want (only part of the regex) to be case sensitive , then you have the option to use the (?-i) and [optionally] (?i) mode modifiers: (?-i)G[a-b](?i).*
If you're dealing with Unicode characters besides ASCII, check whether or not your regex engine properly supports them.
Einige Anmerkungen und Erklärungen zur Technik und Verwendung der regulären Ausdrücke in JobScheduler und YADE.
Ein regulärer Ausdruck ist keine wildcard . Um einen ersten Eindruck bezüglich des Unterschiedes zwischen einem "regulären Ausdruck" und einer "wildcard" zu bekommen, vergleichen Sie die Bedeutung der wildcard "*.txt" mit dem regulären Ausdruck "^.*\.txt$". Beide Ausdrücke erlauben die Selektion aller Dateinamen, die mit einer beliebigen Zeichenfolge beginnen und dann mit ".txt" enden. Der reguläre Ausdruck erfüllt in diesem Beispiel die gleichen Anforderungen, ist aber wesentlich mächtiger, sobald komplexere Kriterien abgebildet werden müssen.
Die generelle Syntax eines regulären Ausdrucks, auch bezeichnet als regex oder regexp, ist hier beschrieben. Es weicht ab von anderen Definitionen der regulären Ausdrücke, zum Beispiel wie sie in Perl verwendet werden.
Für weitere Informationen über reguläre Ausdrücke siehe java.util.regex.Pattern
Als Erweiterung der Syntax der regulären Ausdrücke kann die [date:]-variable verwendet werden. Mit dieser Variablen kann z.B. ein regulärer Ausdruck gebildet werden, der das jeweilige aktuelle Datum enthält, ohne daß der Ausdruck neu gebildet werden muß.
Wenn der Vergleich mit dem regulären Ausdruck, oder Teile des Ausdruck, die Groß-/Kleinschreibung berücksichtigt werden soll, so kann dies mit der folgenden Schreibweise spezifiziert werden.
Durch Verwendung von (?-i) - Klein-/Großschreibung beachten - und [optional] (?i) - Klein-/Großschreibung nicht beachten - Modifikatoren: (?-i)G[a-b](?i).*
Sie sollten sicherstellen, daß die regex engine Unicode unterstützt, sobald Sie Unicode-Zeichen im regexp verwenden. Andernfalls erhalten Sie unerwartete Ergebnisse des Vergleichs.
Der Job führt PL/SQL Code aus.
Es ist möglich, zum einen eine dedizierte Fehlerauswertung zu erhalten und zum anderen die Folgesteuerung in einer Job-Kette zu erleichtern. Ebenso nützlich ist es, direkt in der Ausgabe des Scripts enthaltene Informationen in Parameter zu transferieren.
The job executes PL/SQL code.
Das Skript kann in einer separaten Datei gespeichert sein.
Oder es kann als Wert des Parameters
Bevor das Script gestartet wird, wird das Script durch den Job modifiziert. Es werden alle im Script direkt angegebenen Namen der JobScheduler Parameter durch ihren aktuellen Wert substitutiert. Unterstützt werden die Schreibweisen: %parameter_name%, ${SCHEDULER_PARAM_parameter_name}
The script can be saved to a separate file.
Or it can be specified as the value of the parameter
Before the script is executed, the script is modified by the job. All directly specified name of JobScheduler parameters are substituted by their current value. The following notations are supported: %parameter_name%, ${SCHEDULER_PARAM_parameter_name}
Der Job ergänzt den Auftrag um entsprechende Parameter.
Zum einen sind dies statische Parameter, wie sie im Template in dem Abschnitt "return Parameter" beschrieben sind.
Zum anderen sind dies dynamische Parameter.
Der Job parsiert die Ausgaben des Skripts und extrahiert daraus, unter Verwendung eines regulären Ausdrucks, sowohl die
Namen als auch die Werte dieser Parameter.
Der reguläre Ausdruck wird mit dem Parameter
Diese Parameter sind von allen Jobs in allen Job-Schritten lesbar. Der Wert der Parameter kann auch von anderen Jobs in später auszuführenden Job-Schritten verändert werden.
The job transfers the appropriate parameters in the order.
The first of these are static parameters, such as those in the template docu described in the section "return parameters".
On the other hand, these are dynamic parameters.
The job analyzing the output of the script, and extracted there from using a regular expression, both
Names and the values of these parameters.
The regular expression is defined by the parameter
These parameters are readable by all jobs in all job steps. The value of the parameter can be changed by other jobs.
Wird der Job in einer Job-Kette gestartet durch einen Auftrag gestartet, dann können dem Auftrag folgende Parameter zurückgegeben werden
(siehe hierzu den Parameter
Im obigen Beispiel werden folgende Parameter zurückgegeben:
Wird ein Parameter mehrfach gesetzt so wird der letzte gefundene Wert als Auftrags-Parameter verwendet.
If the job or order contains the parameter "table_name=scheduler_variables" then all following selects are substituted to 'select count(*) into howmany from scheduler_variables;'
If the job is started in a job chain by an order, then the following parameters are added to the order as additional parameters
(see the parameter
In the above example the following parameters are returned:
If a parameter is set several times then the last value is used as the order parameter.