pixiMetadata
Liefert die Eingabeparameter eines Pixi-API-Calls mit Namen, Datentyp und maximaler Länge.
Ermittelt die Eingabeparameter eines API-Calls aus der SQL-Server-Katalogsicht INFORMATION_SCHEMA.PARAMETERS der aktuellen Datenbank.
- Jedes Vorkommen von
pixiinprocedurewird durchpipiersetzt. Es können daher sowohl der SOAP-Name (pixiItemSearch) als auch der SQL-Name (pipiItemSearch) übergeben werden. - Beginnt der so entstandene Name nicht mit
pipi, wird eine Statuszeile mitErrNr=403undErrMessage=No such API callzurückgegeben. - Anschließend wird in jedem Fall die Parameterliste des Objekts geliefert:
- nur Objekte der aktuellen Datenbank (
SPECIFIC_CATALOG = DB_NAME()), - nur Parameter mit
PARAMETER_MODE = 'IN', - das führende
@wird aus dem Parameternamen entfernt, - sortiert nach der deklarierten Parameterposition.
- nur Objekte der aktuellen Datenbank (
Existiert der Call nicht, ist die Parameterergebnismenge leer.
Hinweise
- Nach der Fehlerzeile wird die Prozedur nicht beendet. In diesem Fall werden zwei Ergebnismengen geliefert: die Fehlerzeile in
SqlRowSet1und die (meist leere) Parameterliste inSqlRowSet2. Ohne Fehler ist die ParameterlisteSqlRowSet1. - Da die Ausführung fortgesetzt wird, werden die Parameter eines Objekts ohne
pipi-Präfix trotzdem geliefert, sofern ein Objekt mit diesem Namen existiert. REPLACEersetzt jedes Vorkommen vonpixiim Namen, nicht nur das Präfix. Ob Ersetzung und Präfixprüfung Groß-/Kleinschreibung beachten, hängt von der Sortierung (Collation) der Datenbank ab.OUTPUT-Parameter (ModusINOUT) und der Rückgabewert skalarer Funktionen werden nicht aufgeführt. Standardwerte und Pflichtangaben werden nicht geliefert.CHARACTER_MAXIMUM_LENGTHistNULLbei Nicht-Zeichentypen und-1bei(max)-Typen.- Die Sichtbarkeit in
INFORMATION_SCHEMAhängt von den Berechtigungen des Datenbankbenutzers ab. - Die Katalogsicht wird mit
NOLOCKgelesen.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
procedure
Pflicht
|
varchar(50) string |
– |
Name des API-Calls, dessen Parameter abgefragt werden. Entweder der SOAP-Name ( Beispiel: |
Antwort
Result-Set 1 · Nur wenn der Name (nach Ersetzen von pixi durch pipi) nicht mit pipi beginnt.
Fehler-Statuszeile.
| Spalte | Typ | Beschreibung |
|---|---|---|
ErrNr
|
int |
Fehlernummer, immer |
ErrMessage
|
varchar(16) string |
Fehlertext |
Result-Set 2 · Immer; leer, wenn kein passendes Objekt in der aktuellen Datenbank existiert.
Eine Zeile je Eingabeparameter des Calls, sortiert nach deklarierter Position.
| Spalte | Typ | Beschreibung |
|---|---|---|
CallName
Kann leer sein |
nvarchar(128) string |
SQL-Name des Objekts ( |
ParameterName
Kann leer sein |
nvarchar(128) string |
Parametername ohne führendes |
DataType
Kann leer sein |
nvarchar(128) string |
SQL-Datentyp des Parameters, z. B. |
DataTypeLength
Kann leer sein |
int |
Maximale Länge in Zeichen bei Zeichentypen; |
Beispielantwort
<SqlRowSet1>
<row>
<CallName>pipiMetadata</CallName>
<ParameterName>procedure</ParameterName>
<DataType>varchar</DataType>
<DataTypeLength>50</DataTypeLength>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 403 | No such API call | Der übergebene Name beginnt weder mit `pixi` noch mit `pipi`. Den SOAP- oder SQL-Namen eines API-Calls übergeben. Die Parameterergebnismenge folgt trotzdem. |
Beispiele
POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiMetadata>
<procedure>pixiGetItemInfo</procedure>
</ns1:pixiMetadata>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiMetadata>
<procedure>pixiGetItemInfo</procedure>
</ns1:pixiMetadata>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'procedure' => 'pixiGetItemInfo',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiMetadata', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiMetadata