Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_deleteinterfacetables_ad

im_DeleteInterfaceTables_Ad

Löscht alle Datensätze der Schnittstellen-Tabellen für Artikeldaten bzw. für Binärobjekte zu Artikeldaten/Artikeleigenschaften. Derzeit gibt es für den Artikelimport bzw. den Import von „Binaries“ folgende Tabellen :

A) Artikeldaten

  • „ImportItemData_Items“
  • „ImportItemData_Variants“
  • „ImportItemData_Properties“
  • „ImportItemData_ValueDetails“
  • „ImportItemData_CopyItems“
  • „RemoveItemsOrVariants“

B) „Binaries“ für Artikel-Elemente

  • „ImportItemBinaries“
  • „ImportItemBinaries_Properties“
  • „ImportItemBinaries_Copy“

C) „Binaries“ zu Artikel-Eigenschaften

  • „ImportValueBinaries“
  • „ImportValueBinaries_Properties“

Je nachdem welche Schnittstellen-Tabellen gelöscht werden sollen (→ „InterfacesForBinaries“), wird versucht, die entsprechende Schnittstelle (im_ImportItemData_Ad bzw. „_im_ImportItemBinaries“ bzw. „_im_ImportValueBinaries“ vorzubereiten, um exklusiv die Schnittstellen-Tabellen nutzen zu können. Gelingt dies, kann man in „BatchJobs“ (s. mi_GetBatchJobs_Ad) für die entsprechende Prozedur den Status „99“ sehen; andernfalls kann es zum Fehler „-560“ kommen.

Anmerkungen zum Parameter „CreateImportTable“ :

Im Fall „InterfacesForBinaries = 0“ (wenn also nur Schnittstellen-Tabellen für Artikeldaten geleert werden sollen - nicht aber für Binärdateien) steht auch eine spezielle Form des Imports von Artikeldaten via im_ImportItemData_Ad zur Verfügung. Diese Prozedur kann nämlich auch Daten verarbeiten, die nur über EINE einzige, spezielle Tabelle übergeben werden, in der aber
DASSELBE abgebildet werden kann wie über die eigentlichen (sechs) Import-Tabellen („ImportItemData_Items“, „ImportItemData_Variants“, „ImportItemData_Properties“, „ImportItemData_ValueDetails“, „ImportItemData_CopyItems“ und „RemoveItemsOrVariants“) ! Hierzu ist „CreateImportTable = 1“ zu übergeben, was folgendes bewirkt :

1.) Wir führen zunächst dasselbe wie im Fall „InterfacesForBinaries = 0“ und „CreateImportTable = 0“ durch, d.h. es wird versucht, die Schnittstelle im_ImportItemData_Ad vorzubereiten und alle Import-Tabellen zu leeren.

2.) ZUSÄTZLICH wird aber eine spezielle Tabelle (zur Zeit in der Datenbank „dstoreifin“) angelegt, in die anschließend dann Daten (i.d.R. via „bcp“-Tool) eingefügt werden können. Um die Tabelle nutzen zu können, erhält der Aufrufer eine entsprechende Ergebnismenge mit dem Namen der Tabelle. Warum ist der Name nicht festgelegt ? Weil auf demselben ASE-Server ja MEHRERE „Engines“ installiert sein können, ist es möglich, daß diese Prozedur hier MEHRFACH aufgerufen wird bzw. MEHRERE Versionen dieser speziellen Tabelle GLEICHZEITIG existieren müssen. Alternativ könnte die Tabelle natürlich auch in dieser DB (in der diese Prozedur hier gespeichert ist) erstellt werden, was aber i.d.R. das anschließende Befüllen mit „fast bcp“ ausschließt - weil hierzu eine DB-Option gesetzt sein muß, was aber wiederum die Möglichkeit der Sicherung des Transaktions-Logs, s. mi_DumpTransactionLog_Ad, verhindert ! Ein weiterer Grund ist, daß ein parallel laufender Prozess weder aus Versehen noch absichtlich Daten in die Tabelle einfügen können soll (daher enthält der Name auf jeden Fall eine zufällig generierte Zeichenkette).
Hinweise :
(i) Der so erhaltene Name muß dann beim späteren im_ImportItemData_Ad-Aufruf im Parameter „ImportFromTableName“ übergeben werden.
(ii) Um zu vermeiden, daß nach und nach sehr viele Tabellen dieser Art entstehen, weil nach dem Aufruf dieser Prozedur hier das Import-Prozedere NICHT zu Ende geführt wird (die Tabelle wird erst am Ende des erfolgreichen Aufrufs von im_ImportItemData_Ad gelöscht), prüfen wir zu Beginn, ob es Tabellen dieser Art gibt und löschen ggf. solche Objekte.
(iii) Hier die Spalten-Definition der erstellten Tabelle (nähere Erläuterung s. im_ImportItemData_Ad) :

  • ItemID integer NOT NULL
  • VariantID integer NOT NULL
  • CharacOrPseudoCharacID smallint NOT NULL
  • Value varchar(1000) NULL
  • Details text NULL in row(2500)

3.) Weil der Import von Daten durch den „interfaceuser“ erfolgen sollte, vergeben wir „select“- und „insert“-Rechte auf die erstellte Tabelle für diesen speziellen Benutzer.

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieitem management
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
InterfacesForBinaries0 Welche Schnittstellen-Tabellen sind zu leeren ?
* „0“ : NICHT die für „Binaries“
* „1“ : AUCH die für „Binaries“
* „2“ : NUR die für „Binaries“
* „3“ : NUR die für „Binaries“ zu Artikeln
* „4“ : NUR die für „Binaries“ zu Artikel-Eigenschaften
tinyint3.5.0
CreateImportTable0 Wird nur beachtet, wenn „InterfacesForBinaries = 0“ ist ! „1“ angeben, um eine spezielle Import-Tabelle erstellen zu lassen (Name der Tabelle wird als Ergebnismenge geliefert) - s. Beschreibung !
bit7.0.3

Rückgabe

wenn CreateImportTable = 1 und InterfacesForBinaries = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
CreatedTableNameName der erzeugten Tabelle inkl. Datenbank- und Owner-Information falls nötig (wenn sie also nicht in der Datenbank, in der diese Prozedur hier gespeichert ist, existiert)
varchar(100)7.0.3

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-599Lizenz ist ungültig oder abgelaufennur 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
-565Die „Objekt-ID“ der Prozedur konnte nicht ermittelt werdennur indirekt
-562Die Prozedur ist nicht in BatchJobs registriertnur indirekt
-560Prozedur konnte nicht gestartet 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
-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.3 2013-12-13Neuer Parameter „CreateImportTable“
5.0.0 2004-12-211. Umstellung auf „_mi_TryToPrepareBatchJob“, daher konnte insbesondere die erst im letzten update eingeführte Transaktion [um die einzelnen „DELETE“-statements herum] wieder herausgenommen werden
2. Neue mögliche Werte für „InterfacesForBinaries“
4.0.11 2004-03-311. Aufruf der Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“
2. „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn
3. Fehler in der Doku
4. Es gab keine Fehlerbehandlung und keine Transaktion !
3.5.4 2001-03-11
3.5.0 2000-11-23Erstmalig 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 POST  'http://<partner>-<project>.dstore.de/default/engine/im_DeleteInterfaceTables_Ad'

Mit xmllint 6) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/im_DeleteInterfaceTables_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'),
	'im_DeleteInterfaceTables_Ad',
		array(
			// 'InterfacesForBinaries' => 0,
			// 'CreateImportTable' => 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="im_DeleteInterfaceTables_Ad">
			<Parameters>
				<!-- <Parameter Name="InterfacesForBinaries">0</Parameter> -->
				<!-- <Parameter Name="CreateImportTable">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/im_deleteinterfacetables_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)