Gibt den Source-Code einer Prozedur (entweder via „print“ auf der Standard-Ausgabe oder als Ergebnismenge) aus.
Hinweise :
1.) Wenn Kommentare ausgelassen werden sollen und die verbleibenden Zeichen NUR aus „tabs“ und/oder „spaces“ und/oder „CRs“ bestehen, lassen wir die entsprechende Zeile ganz aus !
2.) Wir gehen davon aus, daß eine Code-Zeile mit dem „line feed“-Zeichen (ASCII-Code „10“) endet !
3.) Das „line feed“-Zeichen geben wir NICHT MIT ZURÜCK !
Anmerkung : Falls jedoch die Zeile NUR aus einem „line feed“ besteht, geben wir einen „leeren string“ ('') zurück.
4.) Wenn der Quellcode von einem DOS-/Windows-Client wie dem „SQL Advantage“ kompiliert wurde, enthält das Zeilenende die „CR-LF“-Kombination, also ein „carriage return“ (ASCII-Code „13“) gefolgt von einem „line feed“ (ASCII-Code „10“). In diesem Fall lassen wir (neben dem „line feed“) auch das „carriage return“ aus !
Analog (zu 3.) gilt, wenn NUR eine „CR-LF“-Kombination vorhanden ist, geben wir einen „leeren string“ ('') zurück.
HTTP-Method | GET |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | system administration |
Engine-Typ | Daten-Ermittlung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
ProcedureName | Name einer Prozedur, dessen Source-Code ausgegeben werden soll | varchar(50) | 5.1.7 | |
OnlyProcHeader | 0 | „1“ angeben, um nicht den kompletten Source-Code zu erhalten, sondern nur den „Kopf“ (das ist alles bis zum Beginn des Implementierungs-Teils) | bit | 5.1.7 |
IgnoreComments | 0 | Hiermit kann man steuern, ob Kommentare mit ausgegeben werden sollen („0“) oder nicht („1“) | bit | 5.1.7 |
GetCodeLinesAsResultSet | 0 | Ist hier „1“ angegeben, bekommt man den Source-Code als Ergebnismenge - „OnlyProcHeader“ wird dann ignoriert ! | bit | 5.1.8 |
IncludeStatementsForCreation | 0 | Wird nur beachtet, wenn „GetCodeLinesAsResultSet = 0“ ist ! „1“ angeben, wenn die Ausgabe alles enthalten soll, um die Prozedur zu erstellen (z.B. inkl. „If exists … DROP PROCEDURE …“). | bit | 6.0.0 |
DatabaseName | NULL | Angeben („OnlyProcHeader“ wird dann ignoriert), wenn „ProcedureName“ in einer ANDEREN Datenbank liegt. Mögliche Werte : * dstore * dstoreifin * dstoreifout * dstoretempdb * sybsystemprocs („IncludeStatementsForCreation“ wird dann ignor.) * tempdb | varchar(50) | 6.5.2 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
CodeLineNumber | Eindeutige Zeilennummer des Codes „CodeLine“ | smallint | 5.1.8 |
CodePartLineNumber | Eindeutige Zeilennummer des REINEN Codes „CodePart“ (also ohne Kommentare). Wenn hier „NULL“ steht, ist „CodePart“ auch „NULL“ ! | smallint | 5.1.8 |
CodeLine | Der komplette Code, der in Zeile „CodeLineNumber“ steht. ACHTUNG : Ist „IgnoreComments = 1“, steht hier immer „NULL“ ! | varchar(255) | 5.1.8 |
CodePart | Der „reine“ Code der Code-Zeile (ohne Kommentare). Anmerkungen : * Wenn die verbleibenden Zeichen NUR aus „tabs“ und/oder „spaces“ und/oder „CRs“ bestehen, steht hier „NULL“ * Ist „IgnoreComments = 1“, erhält man nur Zeilen, die hier NICHT „NULL“ enth. | varchar(255) | 5.1.8 |
CommentPart | Jeglicher Kommentar in der Code-Zeile ACHTUNG : Ist „IgnoreComments = 1“, steht hier immer „NULL“ ! | varchar(255) | 5.1.8 |
(parameterunabängige Sortierung)
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 5) |
---|---|---|
-573 | Der Source-Code der Prozedur ist nicht verfügbar | nur indirekt |
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-500 | Falsche Parameter | nur indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
7.0.5 | 2014-05-26 | Ab jetzt werden im Fall „IncludeStatementsForCreation = 1“ auch für „_“-Prozeduren evtl. „grant execute“-Ausgaben erzeugt |
6.5.2 | 2013-02-26 | Neuer Parameter „DatabaseName“ |
6.0.0 | 2010-03-26 | 1. Neuer Parameter „IncludeStatementsForCreation“ 2. Neues Verhalten, wenn Source-Code-Zeilen NUR aus einem „line feed“ bzw. einer „CR-LF“-Kombination bestehen |
5.1.8 | 2006-12-12 | Neuer Parameter „GetCodeLinesAsResultSet“ |
5.1.7 | 2006-10-31 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetProcedureCode_Ad?ProcedureName=<value>'
Mit xmllint 6) formatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/mi_GetProcedureCode_Ad?ProcedureName=<value>' | xmllint --format -
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'mi_GetProcedureCode_Ad', array( 'ProcedureName' => '<value>', // 'OnlyProcHeader' => 0, // 'IgnoreComments' => 0, // 'GetCodeLinesAsResultSet' => 0, // 'IncludeStatementsForCreation' => 0, // 'DatabaseName' => NULL ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?> <ListOfBatches> <Batch No="0"> <Procedure Name="mi_GetProcedureCode_Ad"> <Parameters> <Parameter Name="ProcedureName"><!-- varchar value --></Parameter> <!-- <Parameter Name="OnlyProcHeader">0</Parameter> --> <!-- <Parameter Name="IgnoreComments">0</Parameter> --> <!-- <Parameter Name="GetCodeLinesAsResultSet">0</Parameter> --> <!-- <Parameter Name="IncludeStatementsForCreation">0</Parameter> --> <!-- <Parameter Name="DatabaseName">NULL</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>