Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:pm_getpersons_conditions_ad

pm_GetPersons_Conditions_Ad

Prozedur zur Suche nach Personen, die bestimmte Eigenschaften besitzen.

Anmerkung zum Parameter „CharacteristicIDList“ :

Für alle angegebenen Merkmale muß der Aufrufer vollständigen lesenden Zugriff besitzen (s. pm_GetPChAccRestrForUsers_Ad), ansonsten gibt es einen Fehler !

Anmerkungen zum Parameter „ConditionList“ :

1. Es können Werte und Wertbereiche angegeben werden. Jede einzelne Bedingung muß eines der folgenden Formate haben (dabei ist unbedingt die Reihenfolge zu beachten !) :

  • {} oder {) oder {] oder (} oder () oder (] oder [} oder [) oder [] → Es sollen alle Personen gesucht werden, die das entsprechende Merkmal NICHT haben.
  • (Wert1|Wert2) → „>=“ Wert1 und „⇐“ Wert2
  • (Wert1|Wert2] → „>=“ Wert1 und „<“ Wert2
  • [Wert1|Wert2) → „>“ Wert1 und „⇐“ Wert2
  • [Wert1|Wert2] → „>“ Wert1 und „<“ Wert
  • {Wert → „<>“ Wert
  • (Wert → „>=“ Wert
  • [Wert → „>“ Wert
  • ~Wert → „Like“ Wert, aber case-INsensitiv
  • ^Wert → „= soundex(Wert)“
  • Wert) → „⇐“ Wert
  • Wert] → „<“ Wert
  • Wert → „Like“ Wert

Hinweis : „Wert“ oder „Wert1“ oder „Wert2“ meint einen „string“, der NICHT „NULL“ ist !

2. Sofern eine Bedingung eines der Formate „Wert“ oder „~Wert“ hat (also eine „LIKE“-Suche durchgeführt werden soll), können sogenannte Platzhalter verwendet werden :

  • '_' oder '?' : Platzhalter für EIN Zeichen
  • '%' oder '*' : Platzhalter für eine ZeichenKETTE

3. Um nach einem Wert zu suchen, der mit „[“ oder „(“ oder „{“ oder „~“ oder „^“ beginnt oder der mit „]“ oder „)“ oder „}“ endet, muß man den „~“-Operator verwenden (z.B. „~[*“ angeben, um nach Werten zu suchen, die mit „[“ beginnen)

4. Soll in einer „LIKE“-Suche (d.h. wenn die Bedingung das Format „Wert“ oder „~Wert“ hat) nach einem Platzhalter-Zeichen selbst gesucht werden, ist dieses Zeichen 2mal hintereinander einzugeben (z.B. würde durch Angabe von „%%%“ nach Werten gesucht werden, die mit „%“ beginnen)

5. Im Falle einer „LIKE“-Suche (d.h. wenn die Bedingung das Format „Wert“ oder „~Wert“ hat) werden (in dieser Reihenfolge !) folgende Ersetzungen vorgenommen :

  • „?“ durch „_“, ausgenommen „??“ (diese Zeichenkette wird durch „?“ ersetzt)
  • „*“ durch „%“, ausgenommen „**“ (diese Zeichenkette wird durch „*“ ersetzt)
  • „__“ durch „[_] (um nach dem Zeichen „_“ selbst suchen zu können, siehe 4.)
  • “%%„ durch “[%] (um nach dem Zeichen „%“ selbst suchen zu können, siehe 4.)

⇒ Daher wird z.B. „?_“ sowie „_?“ durch „[_]“ ersetzt, oder „*%“ sowie „%*“ durch „[%]“. Allerdings wird z.B. „__?“ durch „[_]_“ ersetzt !

6 . Falls eine Bedingung ein Datums-/Uhrzeitformat hat, muß angegeben sein, um welches Länderformat es sich dabei handelt (siehe Parameter „Country“)

Anmerkungen zum Parameter „OutputCharacteristicIDs“ :

1. Bei den hier angegebenen Merkmalen muß es sich immer um Pflicht-Merkmale („Required = 1“, siehe pm_GetPersonCharacteristics_Ad) handeln !
2. Für alle angegebenen Merkmale muß der Aufrufer vollständigen lesenden Zugriff besitzen (s. pm_GetPChAccRestrForUsers_Ad), ansonsten gibt es einen Fehler !

Anmerkung zu den Parametern „LastValues“ und „LastPersonID“ :

Die durch „LastValues“ angegebenen Werte müssen natürlich zu den in „OutputCharacteristicIDs“ angegebenen Ausgabemerkmalen korrespondieren ! Sind keine Ausgabemerkmale angegeben, werden die „PersonID“s ermittelt, die größer bzw. kleiner (je nach „Next“) als „LastPersonID“ sind. Letzter Parameter wird auch benötigt, wenn es MEHRERE Personen gibt, die die in „LastValues“ angegebenen Eigenschaften haben.

Anmerkung zum Parameter „RowNumber“ :

Möchte man alle Datensätze der Suche zurückbekommen, ist „RowNumber = NULL“ zu übergeben.

Anmerkung zur Sortierung (falls Eigenschaften ausgegeben werden) :

Obwohl alle Eigenschaften als „strings“ gespeichert sind, wird bei der Sortierung auf das zum Merkmal hinterlegte Format geachtet, d.h. handelt es sich bei den Eigenschaften z.B. um Datumsangaben, wird die Datums-Sortierung (und nicht die alphanumerische Sortierung) verwendet.

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieperson management
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

OutputCharacteristicIDs Enthält (maximal 3) Elemente (durch '¶' getrennt) der Form
„0“ | „1“ + <PersonCharacteristicID>
Falls angegeben, werden zu den Personen Eigenschaften zu diesen Merkmalen ermittelt und das Ergebnis nach den Eigenschaften sortiert („0“ abst., „1“ aufst.)
varchar(255)3.5.0
PersonTypeID1 ID eines Personen-Typs. Die Suche bezieht sich immer nur auf einen bestimmten Typ, d.h. es werden auch nur Personen dieses Typs ausgegeben.
tinyint3.5.0
LastValuesNULL Um „durch das Ergebnis blättern“ zu können (mit „Next“ und „RowNumber“), wird der Datensatz der vorherigen „Seite“, sprich des vorherigen Aufrufs, benötigt. Dieser wird durch „LastPersonID“ und „LastValues“ repräsentiert. (siehe Beschreibung)
varchar(255)3.5.0
LastPersonID0 Um „durch das Ergebnis blättern“ zu können (mit „Next“ und „RowNumber“), wird der Datensatz der vorherigen „Seite“, sprich des vorherigen Aufrufs, benötigt. Dieser wird durch „LastPersonID“ und „LastValues“ repräsentiert. (siehe Beschreibung)
integer3.5.0
Next1 Mit diesem Parameter und „RowNumber“ kann man „durch das Ergebnis blättern“ („0“ : rückwärts, „1“ : vorwärts)„, wobei „LastPersonID“ und „LastValues“ den Datensatz des vorherigen Aufrufs repräsentieren.
bit3.5.0
RowNumber50 Maximale Anzahl Datensätze, die zurückgegeben werden soll. Mit diesem Parameter und „Next“ kann man „durch das Ergebnis blättern“, wobei „LastPersonID“ und „LastValues“ den Datensatz des vorherigen Aufrufs repräsentieren.
tinyint3.5.0
GroupIDNULL ID einer Personen-Gruppe. Wenn angegeben, werden nur die Personen berücksichtigt, die dieser Gruppe angehören.
smallint3.5.0
CharacteristicIDListNULL Liste von Merkmal-IDs (durch '¶' getrennt), nach denen („ConditionList“ entsprechend) gesucht werden soll. Um nach dem Erstellungs- bzw. Änderungsdatum von Personen zu suchen (einer „Meta-Information“ also), ist als ID die “-1„ bzw. “-2„ anzugeben.
varchar(255)3.5.0
ConditionListNULL Die zur „CharacteristicIDList“ korrespondierenden Suchbedingungen (durch das in „SeparatorInConditionList“ angegebene Zeichen getrennt, pro ID in „CharacteristicIDList“ muß auch eine Bedingung angegeben sein) - siehe Beschreibung
varchar(255)3.5.0
Country'Germany' Falls eine Bedingung ein Datums-/Uhrzeitformat hat, muß angegeben sein, um welches Länderformat es sich dabei handelt (Groß-/Kleinschreibung wird nicht beachtet) :
'german', 'germany' : Tag-Monat-Jahr
'english', 'england' : Monat-Tag-Jahr
varchar(10)3.5.0
OutputIntoOneID0 Wie das Ergebnis geliefert werden soll :
* „0“ : NUR Ergebnismenge
* „1“ : KEINE Ergebnismenge, ALLE gefund. IDs in „tempdb.dbo.OneID“ speichern
* „2“ : wie „1“, aber „RowNumber“, „LastPersonID“, „Next“ beachten
* „3“ : wie „1“, IDs aber HINZUfügen
tinyint4.0.0
SeparatorInLastValues'¶' Gibt an, durch welche Zeichenkette die Werte in „LastValues“ (falls angegeben) getrennt sind
varchar(4)5.5.0
SeparatorInConditionList'¶' Gibt an, durch welche Zeichenkette die Werte in „ConditionList“ getrennt sind
varchar(4)5.5.0

Rückgabe

wenn OutputIntoOneID = 0 und OutputCharacteristicIDs IN (NULL, %%''%%)

Spaltenname Beschreibung SQL-Datentyp1) ab Version
PersonIDID einer Person des Typs „PersonTypeID“, die den Suchbedingungen entspricht
integer3.5.0
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • PersonID (aufsteigend)

wenn OutputIntoOneID = 0 und OutputCharacteristicIDs LIKE '0%%|%%1<PersonCharacteristicID>'

Spaltenname Beschreibung SQL-Datentyp2) ab Version
PersonIDID einer Person des Typs „PersonTypeID“, die den Suchbedingungen entspricht
integer3.5.0
Value1Eigenschaft der Person „PersonID“ zu dem in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Sortierungen der Rückgabe

wenn SortOrder1 = 1

  • Value1 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0

  • Value1 (absteigend)
  • PersonID (aufsteigend)

wenn OutputIntoOneID = 0 und OutputCharacteristicIDs LIKE '0%%|%%1<PersonCharacteristicID>¶0%%|%%1<PersonCharacteristicID>'

Spaltenname Beschreibung SQL-Datentyp3) ab Version
PersonIDID einer Person des Typs „PersonTypeID“, die den Suchbedingungen entspricht
integer3.5.0
Value1Eigenschaft der Person „PersonID“ zum ERSTEN in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Value2Eigenschaft der Person „PersonID“ zum ZWEITEN in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Sortierungen der Rückgabe

wenn SortOrder1 = 1 und SortOrder2 = 1

  • Value1 (aufsteigend)
  • Value2 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 1

  • Value1 (absteigend)
  • Value2 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 0

  • Value1 (absteigend)
  • Value2 (absteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 1 und SortOrder2 = 0

  • Value1 (aufsteigend)
  • Value2 (absteigend)
  • PersonID (aufsteigend)

wenn OutputCharacteristicIDs LIKE '0%%|%%1<PersonCharacteristicID>¶0%%|%%1<PersonCharacteristicID>¶0%%|%%1<PersonCharacteristicID>' und OutputIntoOneID = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
PersonIDID einer Person des Typs „PersonTypeID“, die den Suchbedingungen entspricht
integer3.5.0
Value1Eigenschaft der Person „PersonID“ zum ERSTEN in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Value2Eigenschaft der Person „PersonID“ zum ZWEITEN in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Value3Eigenschaft der Person „PersonID“ zum DRITTEN in „OutputCharacteristicIDs“ angegebenen Merkmal
varchar(100)3.5.0
Sortierungen der Rückgabe

wenn SortOrder1 = 1 und SortOrder2 = 1 und SortOrder3 = 1

  • Value1 (aufsteigend)
  • Value2 (aufsteigend)
  • Value3 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 1 und SortOrder3 = 1

  • Value1 (absteigend)
  • Value2 (aufsteigend)
  • Value3 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 0 und SortOrder3 = 1

  • Value1 (absteigend)
  • Value2 (absteigend)
  • Value3 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 1 und SortOrder3 = 0

  • Value1 (absteigend)
  • Value2 (aufsteigend)
  • Value3 (absteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 0 und SortOrder2 = 0 und SortOrder3 = 0

  • Value1 (absteigend)
  • Value2 (absteigend)
  • Value3 (absteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 1 und SortOrder2 = 0 und SortOrder3 = 1

  • Value1 (aufsteigend)
  • Value2 (absteigend)
  • Value3 (aufsteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 1 und SortOrder2 = 1 und SortOrder3 = 0

  • Value1 (aufsteigend)
  • Value2 (aufsteigend)
  • Value3 (absteigend)
  • PersonID (aufsteigend)

wenn SortOrder1 = 1 und SortOrder2 = 0 und SortOrder3 = 0

  • Value1 (aufsteigend)
  • Value2 (absteigend)
  • Value3 (absteigend)
  • PersonID (aufsteigend)

Output-Parameter

CountAusgabeparameter, der die Anzahl ALLER Personen, die den Suchbedingungen entsprechen, enthält

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-697Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung bestehtnur 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
-540Falsches Formatnur 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.3 2013-12-13Neuer möglicher Wert für „OutputIntoOneID“
7.0.0 2013-06-04Kleiner Doku-Fehler [verwendete Prozeduren]
6.5.4 2013-04-29Kleine Optimierung bzgl. Belegung einer internen Variablen [„UserID“]
6.5.2 2013-02-261. Implementierung des neuen features „Zugriffsbeschränkungen auf Personen-Merkmale“
2. Interne Anpassungen (u.a. wg. UTF8-Unterstützung)
5.5.2 2008-10-21Fehler : Bei Angabe einer Personentyp-unabhängigen Gruppe [„GroupID“] ohne weitere Suchbedingungen wurde „PersonTypeID“ nicht beachtet
5.5.0 2008-01-071. Neue Parameter „SeparatorInLastValues“ und „SeparatorInConditionList“
2. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall “-500„, die nähere Informationen über die Ursache enthält
5.1.3 2006-07-27Der Parameter „OutputIntoOneID“ ist jetzt vom Typ „tinyint“ ⇒ neue Möglichkeit
5.0.4 2005-09-26Unklare Definition der Syntax der Suchbedingungen in „ConditionList“ und kleine unlogische Verhaltensweisen. Da dieses korrigiert wurde, hat sich die Dokumentation und das Verhalten [nur in seltenen Fällen] geändert
4.0.9 2004-03-031. Verwendung von „_mi_ChooseParamValueSeperator“ als Vorbereitung von „_mi_StartProcedure“
2. Interne Änderungen (u.a. konsequente Fehlerbehandlung)
3. Doku der Rückgabemenge fehlte
4. „set transaction isolation level 1“, „set rowcount 0“ zu Beginn
4.0.7 2004-01-16Aufruf der neuen Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“
4.0.4 2003-08-261. Erweiterungen : case-INsensitive „LIKE“-Suche, „soundex“-Suche und Suche nach einem Platzhalte-Zeichen selbst
2. Ab jetzt kann als „CharacteristicID“ der Wert “-2„ übergeben werden, um nach dem Änderungsdatum zu suchen
4.0.0 2003-04-03Fehler im Fall „OutputCharacteristicIDs“ ist „NULL“ und „LastPersonID > 0“
3.5.16 2002-04-25
3.5.15 2002-03-12
3.5.14 2002-01-23
3.5.13 2001-12-06
3.5.11 2001-09-06
3.5.9 2001-06-16
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 GET  'http://<partner>-<project>.dstore.de/default/engine/pm_GetPersons_Conditions_Ad?OutputCharacteristicIDs=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/pm_GetPersons_Conditions_Ad?OutputCharacteristicIDs=<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'),
	'pm_GetPersons_Conditions_Ad',
		array(
			'OutputCharacteristicIDs' => '<value>',
			// 'PersonTypeID' => 1,
			// 'LastValues' => NULL,
			// 'LastPersonID' => 0,
			// 'Next' => 1,
			// 'RowNumber' => 50,
			// 'GroupID' => NULL,
			// 'CharacteristicIDList' => NULL,
			// 'ConditionList' => NULL,
			// 'Country' => 'Germany',
			// 'OutputIntoOneID' => 0,
			// 'SeparatorInLastValues' => '¶',
			// 'SeparatorInConditionList' => '¶'
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
 
$OutputParams = $xml_result->getOutputParametersAsArray();
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="pm_GetPersons_Conditions_Ad">
			<Parameters>
				<Parameter Name="OutputCharacteristicIDs"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="PersonTypeID">1</Parameter> -->
				<!-- <Parameter Name="LastValues">NULL</Parameter> -->
				<!-- <Parameter Name="LastPersonID">0</Parameter> -->
				<!-- <Parameter Name="Next">1</Parameter> -->
				<!-- <Parameter Name="RowNumber">50</Parameter> -->
				<!-- <Parameter Name="GroupID">NULL</Parameter> -->
				<!-- <Parameter Name="CharacteristicIDList">NULL</Parameter> -->
				<!-- <Parameter Name="ConditionList">NULL</Parameter> -->
				<!-- <Parameter Name="Country">'Germany'</Parameter> -->
				<!-- <Parameter Name="OutputIntoOneID">0</Parameter> -->
				<!-- <Parameter Name="SeparatorInLastValues">'¶'</Parameter> -->
				<!-- <Parameter Name="SeparatorInConditionList">'¶'</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
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/pm_getpersons_conditions_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)