Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_getprocedurecode_ad

mi_GetProcedureCode_Ad

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-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategoriesystem administration
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

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
OnlyProcHeader0 „1“ angeben, um nicht den kompletten Source-Code zu erhalten, sondern nur den „Kopf“ (das ist alles bis zum Beginn des Implementierungs-Teils)
bit5.1.7
IgnoreComments0 Hiermit kann man steuern, ob Kommentare mit ausgegeben werden sollen („0“) oder nicht („1“)
bit5.1.7
GetCodeLinesAsResultSet0 Ist hier „1“ angegeben, bekommt man den Source-Code als Ergebnismenge - „OnlyProcHeader“ wird dann ignoriert !
bit5.1.8
IncludeStatementsForCreation0 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 …“).
bit6.0.0
DatabaseNameNULL 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

Rückgabe

wenn GetCodeLinesAsResultSet = 1

Spaltenname Beschreibung SQL-Datentyp4) ab Version
CodeLineNumberEindeutige Zeilennummer des Codes „CodeLine“
smallint5.1.8
CodePartLineNumberEindeutige Zeilennummer des REINEN Codes „CodePart“ (also ohne Kommentare). Wenn hier „NULL“ steht, ist „CodePart“ auch „NULL“ !
smallint5.1.8
CodeLineDer komplette Code, der in Zeile „CodeLineNumber“ steht. ACHTUNG : Ist „IgnoreComments = 1“, steht hier immer „NULL“ !
varchar(255)5.1.8
CodePartDer „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
CommentPartJeglicher Kommentar in der Code-Zeile
ACHTUNG : Ist „IgnoreComments = 1“, steht hier immer „NULL“ !
varchar(255)5.1.8
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • CodeLineNumber (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-573Der Source-Code der Prozedur ist nicht verfügbarnur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameternur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.5 2014-05-26Ab jetzt werden im Fall „IncludeStatementsForCreation = 1“ auch für „_“-Prozeduren evtl. „grant execute“-Ausgaben
erzeugt
6.5.2 2013-02-26Neuer Parameter „DatabaseName“
6.0.0 2010-03-261. 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-12Neuer Parameter „GetCodeLinesAsResultSet“
5.1.7 2006-10-31Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

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 -
dStore_php
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();
engine/execute

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>
1)
Pflichtparameter sind unterstrichen
5)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
6)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/mi_getprocedurecode_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)