Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_getproceduredependencies_ad

mi_GetProcedureDependencies_Ad

Ermittelt, welche Prozeduren in einer Prozedur aufgerufen werden inkl. der in diesen Prozeduren aufgerufenen Prozeduren usw.

Man erhält sozusagen einen „Abhängigkeit-Baum“ von Prozeduren (welche Prozedur welche aufruft), dementsprechend ist das Ergebnis auch sortiert (läßt sich nicht in der Art „aufsteigend nach X, absteigend nach Y“ beschreiben) : Man erhält einen „traversierten Baum“, wobei die Reihenfolge von „Geschwister-Knoten“ nach ihrem Aufruf-Vorkommen (zuerst aufgerufene Prozeduren kommen also zuerst) bestimmt wird. Alternativ kann man die Reihenfolge auch aufgrund des „ProcedureName“s (alphabetisch aufsteigend dann) bestimmen lassen, dazu ist „SiblingSortByName = 1“ zu übergeben.

Anmerkung zur Rückgabespalte „CalledInProcedureName“ :

Derzeit können wir keine Prozeduren analysieren, die in einer anderen Datenbank vorkommen außer der dieser Prozedur hier (d.h. im Gegensatz zur Rückgabespalte „ProcedureName“ kommen hier KEINE Namen der Form „<db>.<owner>.<name>“ vor) !

Anmerkung zur Rückgabespalte „ProcedureName“ :

Falls diese Prozedur NICHT aus der Datenbank kommt, in der mi_GetProcedureDependencies_Ad aufgerufen wird, wir der Name vollqualifizierend angegeben, also in dieser Form : „<db>.<owner>.<name>“.

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 der Prozedur, zu der die innerhalb ihr aufgerufenen Prozeduren ermittelt werden sollen
varchar(50)6.5.4
MaxLevelOfDependence20 Bis zu welcher „Baumtiefe“ der Aufruf-/Abhängigkeits-Baum ermittelt werden soll (Rückgabespalte „LevelOfDependence“ hat dann maximal diesen Wert). „0“ angeben für „keine Beschränkung“ !
tinyint6.5.4
MaxNumberOfRows255 Die maximale Anzahl Datensätze, die ausgegeben werden soll (wenn erreicht bricht die Traversierung ab und der letzte Datensatz hat den „StatusCode = 4“). „0“ angeben für „keine Beschränkung“ !
tinyint6.5.4
SiblingSortByName0 Bestimmt die Reihenfolge von „Geschwister-Knoten“ in der Ergebnismenge („ProcedureName“s im Ergebnis mit jeweils gleicher „CalledInProcedureName“-„LevelOfDependence“-Kombination) :
„0“ : aufst. nach Aufruf-Vorkommen
„1“ : alphabetisch aufst. nach Name
bit7.0.0

Rückgabe

(parameterunabhängig)

Spaltenname Beschreibung SQL-Datentyp4) ab Version
CalledInProcedureNameName einer Prozedur, die „ProcedureName“ aufruft. Falls „LevelOfDependence = 1“ ist, handelt es sich immer um „ProcedureName“ (sonst eine Prozedur, die in „ProcedureName“ aufgerufen wird und selbst wiederum eine Prozedur aufruft oder … usw.).
varchar(250)6.5.4
ProcedureNameName einer Prozedur, die IN „CalledInProcedureName“ aufgerufen wird
varchar(250)6.5.4
CodeLineNumbersIn welchen Code-Zeilen (durch „,“ getrennt) von „CalledInProcedureName“ (Anmerkung : INKLUSIVE Beachtung von Kommentar-Zeilen) sich ein Aufruf von „ProcedureName“ befindet
varchar(255)6.5.4
LevelOfDependenceGrad der Abhängigkeit bzw. eine Art „TreeLevel“ (oder „Baumtiefe“) :
- „1“ : Direkter Aufruf („CalledInProcedureName = ProcedureName“)
- „2“ : Indirekter Aufruf „2. Grades“ (Aufruf in einer Prozedur, die in „ProcedureName“ aufgerufen wird)
usw.
tinyint6.5.4
StatusCodeWert „<> 0“ heißt „Traversierung an dieser Stelle abge-/unterbrochen“. Mögliche Gründe:
- „1“ : Zirkel-Bezug
- „2“ : Analyse nicht möglicht
- „3“ : Quellcode nicht vorhanden
- „4“ : „MaxNumberOfRows“ erreicht
- „5“ : „MaxLevelOfDependence“ erreicht
tinyint6.5.4

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-577Der Source-Code der SQL-Funktion ist nicht verfügbarnur indirekt
-574Der Source-Code des Triggers ist nicht verfügbarnur indirekt
-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 abgebrochendirekt und indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und 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 Änderungen („_mi_GetLogicalReads“ gehört nicht „dbo“ sondern „sa“, Datentyp-Erweiterung des „ReferenceKey“)
7.0.5 2014-05-26Ausnahme bei Prozedur-Ausführungen behandelt, nämlich „exec ProcName …“ [⇒ führt zu „StatusCode = 2“ im
Ergebnis]
7.0.0 2013-06-041. Neuer Parameter „SiblingSortByName“
2. Neue Sortierung der „Geschwister-Elemente“ im Baum : nach Vorkommen. Mit dem neuen Parameter kann man aber
das alte Verhalten [nach Name] bekommen.
6.5.4 2013-04-29Erstmalig 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_GetProcedureDependencies_Ad?ProcedureName=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/mi_GetProcedureDependencies_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_GetProcedureDependencies_Ad',
		array(
			'ProcedureName' => '<value>',
			// 'MaxLevelOfDependence' => 20,
			// 'MaxNumberOfRows' => 255,
			// 'SiblingSortByName' => 0
		)
);
 
$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_GetProcedureDependencies_Ad">
			<Parameters>
				<Parameter Name="ProcedureName"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="MaxLevelOfDependence">20</Parameter> -->
				<!-- <Parameter Name="MaxNumberOfRows">255</Parameter> -->
				<!-- <Parameter Name="SiblingSortByName">0</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_getproceduredependencies_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)