Inhaltsverzeichnis

mi_GetProcedureParameters

Liefert die Parameter einer Prozedur inkl. Informationen über den Datentyp zurück.

Hinweise :
1. Im Gegensatz zu do_GetProcedureParameters_Ad werden zwar keine Default-Werte zurückgegeben, aber dafür ist dieses Ergebnis „verläßlich“, d.h. die Angaben kommen aus den System-Tabellen der Datenbank selbst, so daß Fehler (wie in der Dokumentation) ausgeschlossen sind.
2. Wenn es sich bei dem Benutzer, der diese Prozedur aufruft, um den „publicuser“ handelt, wird überprüft, ob es sich beim angegebenen Prozedur-Namen (→ „ProcedureName“) auch um eine „public“-Prozedur handelt (sonst gibt es den Fehler „-500“), d.h. der Name darf nicht auf „_Ad“ enden oder mit „_“ beginnen.

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategoriemiscellaneous
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.4 (2014-03-19)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
ProcedureName Name einer Prozedur, zu der die Parameter ermittelt werden sollen
varchar(50)4.0.0
ParameterNameNULL Name eines Parameters der Prozedur „ProcedureName“. Falls angegeben, wird nur der Datensatz zu diesem Parameter ausgegeben.
varchar(50)4.0.0
DatabaseNameNULL Angeben, wenn „ProcedureName“ in einer ANDEREN DB liegt (NICHT für „publicuser“ erlaubt). Mögliche Werte :
* dstore
* dstoreifin
* dstoreifout
* dstoretempdb
* sybsystemprocs
* tempdb
varchar(50)6.5.2

Rückgabe

(parameterunabhängig)

Spaltenname Beschreibung SQL-Datentyp4) ab Version
colid5)Wird nicht ausgegeben, sondern nur zur Sortierung verwendet. Spalte aus „syscolumns“, die für Prozedur-Objekte angibt, um den wievielten Parameter es sich handelt.
tinyint4.0.0
ParameterNameName eines Parameters der Prozedur „ProcedureName“
sysname4.0.0
DatatypeDaten-Typ des Parameters „ParameterName“
sysname4.0.0
LengthWieviel Byte können Werte, die für den Parameter „ParameterName“ übergeben werden, maximal enthalten. Bei vielen Daten-Typen ist die Speicherbelegung immer so groß wie dieser Wert (bei numerischen Daten-Typen z.B.).
tinyint4.0.0
PrecisionValueGilt nur für einige numerische Daten-Typen (z.B. „decimal“) und gibt die maximale Anzahl Stellen an, die ein Wert für den Parameter „ParameterName“ enthalten kann
tinyint4.0.0
ScaleGilt nur für einige numerische Daten-Typen (z.B. „decimal“) und gibt die Genauigkeit, sprich die maximale Anzahl an Nachkomma-Stellen an, die ein Wert für den Parameter „ParameterName“ enthalten kann
tinyint4.0.0
IsOutputParameterHandelt es sich bei dem Parameter „ParameterName“ um einen Ausgabeparameter („0“ : Nein, „1“ : Ja) ?
bit6.0.7
Sortierung der Rückgabe

(parameterunabängige Sortierung)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 6)
-500Falsche Parameternur direkt

XML-Schema

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

Historie

7.0.4 2014-03-19Kleine Kosmetik-Korrektur : Bei einigen Code-Zeilen war am Ende ein CR-Zeichen, was wir entfernt haben
6.5.2 2013-02-26Neuer Parameter „DatabaseName“
6.0.7 2012-05-08Neue Rückgabespalte „IsOutputParameter“
6.0.4 2011-10-211. Ab jetzt wird geprüft, ob „ProcedureName“ auch tatsächlich eine existierende „stored procedure“ ist
2. Anpassungen an den aktuellen Quellcode-Standard
6.0.2 2011-06-08„grant execute“-Statement ergänzt
4.0.0 2003-04-03Erstmalig 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_GetProcedureParameters?ProcedureName=<value>'

Mit xmllint 7) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/mi_GetProcedureParameters?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_GetProcedureParameters',
		array(
			'ProcedureName' => '<value>',
			// 'ParameterName' => NULL,
			// '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_GetProcedureParameters">
			<Parameters>
				<Parameter Name="ProcedureName"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="ParameterName">NULL</Parameter> -->
				<!-- <Parameter Name="DatabaseName">NULL</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
5)
Spalte wird nicht zurückgegeben und ist hier nur aus Dokumentationsgründen aufgeführt.
6)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
7)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org