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-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 der Prozedur, zu der die innerhalb ihr aufgerufenen Prozeduren ermittelt werden sollen | varchar(50) | 6.5.4 | |
MaxLevelOfDependence | 20 | 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“ ! | tinyint | 6.5.4 |
MaxNumberOfRows | 255 | 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“ ! | tinyint | 6.5.4 |
SiblingSortByName | 0 | 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 | bit | 7.0.0 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
CalledInProcedureName | Name 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 |
ProcedureName | Name einer Prozedur, die IN „CalledInProcedureName“ aufgerufen wird | varchar(250) | 6.5.4 |
CodeLineNumbers | In welchen Code-Zeilen (durch „,“ getrennt) von „CalledInProcedureName“ (Anmerkung : INKLUSIVE Beachtung von Kommentar-Zeilen) sich ein Aufruf von „ProcedureName“ befindet | varchar(255) | 6.5.4 |
LevelOfDependence | Grad 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. | tinyint | 6.5.4 |
StatusCode | Wert „<> 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 | tinyint | 6.5.4 |
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 5) |
---|---|---|
-577 | Der Source-Code der SQL-Funktion ist nicht verfügbar | nur indirekt |
-574 | Der Source-Code des Triggers ist nicht verfügbar | nur indirekt |
-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 | direkt und indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-500 | Falsche Parameter | direkt und 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 Änderungen („_mi_GetLogicalReads“ gehört nicht „dbo“ sondern „sa“, Datentyp-Erweiterung des „ReferenceKey“) |
7.0.5 | 2014-05-26 | Ausnahme bei Prozedur-Ausführungen behandelt, nämlich „exec ProcName …“ [⇒ führt zu „StatusCode = 2“ im Ergebnis] |
7.0.0 | 2013-06-04 | 1. 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-29 | 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_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 -
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();
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>