Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_gettableddl_ad

mi_GetTableDDL_Ad

Gibt den Quellcode zur Erstellung aller Benutzer-Tabellen einer Datenbank (per default der Datenbank, in der diese Prozedur installiert ist) via „print“ an die Standardausgabe.

Alternativ kann man sich aber auch die Spaltendefinition einer einzigen Tabelle als Ergebnismenge ausgeben lassen (→ „GetOnlyColumnDefAsResult = 1“). In diesem Fall darf der Name der entsprechenden Tabelle (→ „OnlyTableName“) auch ein vollqualifizierter Namen sein, also in der Form <db>.<owner>.<table> („DatabaseName“ muß dann natürlich „NULL“ sein). Erlaubt sind aber auch nur die Datenbanken, die in „DatabaseName“ angegeben werden dürfen ! Auch ist es möglich, den Namen einer temporären, nur für die Dauer der Sitzung gültigen Tabelle (also „#…“) anzugeben (denn die gehört ja zur „tempdb“ und damit zu einer der erlaubten Datenbanken).

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
OnlyTableNameNULL Name einer Tabelle. Falls angegeben, wird nur die DDL dieser Tabelle ausgegeben. Hinweis : Es wird IMMER der „LIKE“-Operator angewandt, so daß man die DLL aller Tabellen, deren Name einem bestimmtes „pattern“ entspricht, bekommen kann.
varchar(100)6.0.6
DatabaseNameNULL Name einer Datenbank. Angeben, um an die DDL von Tabellen einer anderen Datenbank zu kommen. Es sind aber derzeit nur diese Werte erlaubt :
* dstore
* dstoreifin
* dstoreifout
* dstoretempdb
* tempdb
varchar(50)6.0.6
GetOnlyColumnDefAsResult0 Wird nur beachtet, wenn „OnlyTableName“ NICHT „NULL“ ist ! „1“ angeben, um die Spaltendefinition der Tabelle „OnlyTableName“ (es darf auch ein vollqualifizierte Name sein) als Ergebnis zu erhalten.
bit6.0.7

Rückgabe

wenn GetOnlyColumnDefAsResult = 1

Spaltenname Beschreibung SQL-Datentyp4) ab Version
colid5)Wird nicht ausgegeben, sondern nur zur Sortierung verwendet. Spalte aus „syscolumns“, die für Tabellen angibt, um die wievielte Spalte es sich handelt.
tinyint6.0.7
ColumnNameName einer Spalte der Tabelle „OnlyTableName“
varchar(50)6.0.7
DataTypeGibt den Daten-Typ der Spalte „ColumnName“ an („varchar“, „tinyint“, etc.)
varchar(20)6.0.7
LengthWieviel Byte können Werte, die in der Spalte „ColumnName“ ausgegeben werden, maximal enthalten. Bei vielen Daten-Typen ist die Speicherbelegung immer so groß wie dieser Wert (bei numerischen Daten-Typen z.B.).
integer6.0.7
PrecisionValueGilt nur für einige numerische Daten-Typen (z.B. „decimal“) und gibt die maximale Anzahl Stellen an, die ein Wert, der in der Spalte „ColumnName“ steht, enthalten kann
tinyint6.0.7
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, der in der Spalte „ColumnName“steht, enthalten kann
tinyint6.0.7
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • colid (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 6)
-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 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 Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.6 2014-06-23Ab jetzt wird auch bzgl. Indizes die Sortierung berücksichtigt und daher evtl. „DESC“ [für absteigende Sortierung]
mit ausgegeben
7.0.3 2013-12-131. Unterstützung der „in row“-Option für „text“-Spalten
2. Datentyp-Erweiterung von „OnlyTableName“ wg. der neuen Möglichkeit, den vollqualifizierten Tabellennamen
angeben zu können
6.5.2 2013-02-26Ab jetzt wird auch die „with ignore_dup_key“-Option bei einem Index mit ausgegeben
6.5.1 2012-11-02Datentyp der Rückgabespalte „Length“ war in der Doku falsch [nur im Fall „GetOnlyColumnDefAsResult = 1“]
6.0.8 2012-06-291. Bessere Unterstützung des Datentyps „nvarchar“ bzw. „nchar“ („Länge“ wie z.B. bei „varchar“, also „varchar(100)“, fehlte bislang)
2. Interne Anpassung : Verwendung von „case when“ an Stelle von „isnull“-Verschachtelungen
6.0.7 2012-05-08Neuer Parameter „GetOnlyColumnDefAsResult“ eingeführt. Damit hat man nun die Möglichkeit, die Spaltendefinition
einer in „OnlyTableName“ angegebenen Tabelle als Ergebnismenge zu erhalten.
6.0.6 2012-03-01Erstmalig 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_GetTableDDL_Ad'

Mit xmllint 7) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/mi_GetTableDDL_Ad' | 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_GetTableDDL_Ad',
		array(
			// 'OnlyTableName' => NULL,
			// 'DatabaseName' => NULL,
			// 'GetOnlyColumnDefAsResult' => 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_GetTableDDL_Ad">
			<Parameters>
				<!-- <Parameter Name="OnlyTableName">NULL</Parameter> -->
				<!-- <Parameter Name="DatabaseName">NULL</Parameter> -->
				<!-- <Parameter Name="GetOnlyColumnDefAsResult">0</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
engine/procedures/mi_gettableddl_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)