cniSqlCreateReadOnlyPathExpression

Erstellt ein SqlPathExpression-Objekt, das den durch das Pfadargument angegebenen Pfad darstellt. Der Pfad, zu dem navigiert wird, erstellt keine Pfadelemente, wenn sie noch nicht vorhanden sind. Diese Funktion gibt einen Zeiger auf das Objekt 'PathExpression' zurück, das als Eingabe für die Funktionen, die zu dem Pfad, d. h. zur cniSqlNavigatePath-Familie, navigieren.

Das Erstellen des Ausdrucks ist mit einem Aufwand verbunden. Wenn also für jede Nachricht derselbe Pfadausdruck verwendet werden soll, sollte diese Funktion einmal aufgerufen werden und der Ausdruck CciSqlPathExpression*, der zurückgegeben wird, sollte in einem Aufruf an cniSqlNavigate für jede Nachricht verwendet werden. Sie können CciSqlPathExpression* für andere Threads verwenden als für den Thread, für den der Ausdruck erstellt wurde.

Syntax

CciSqlPathExpression* cniSqlCreateReadOnlyPathExpression( 
	   int*		     returnCode,
     CciNode*           nodeObject,
     CciChar*           dataSourceName,
     CciChar* path );

Parameters

Rückkehrcode (Ausgabe)
Die Eingabe eines Nullzeigers bedeutet, dass der benutzerdefinierte Knoten nicht für Fehler zuständig sein möchte. Jegliche während der Ausführung dieses Aufrufs ausgelösten Ausnahmebedingungen werden beim nächsten übergeordneten Knoten im Fluss erneut ausgelöst. Wenn die Eingabe nicht NULL ist, gibt die Ausgabe den Erfolgsstatus des Aufrufs an. Wenn während der Ausführung eine Ausnahmebedingung auftritt, wird *returnCode bei der Ausgabe auf CCI_EXCEPTION gesetzt. Rufen Sie cciGetLastExceptionData für Details der Ausnahmebedingung auf. Wenn ein ungültiger 'nodeObject'-Parameter übergeben wurde, wird der Rückkehrcode auf CCI_INV_NODE_OBJECT gesetzt. Wenn ein ungültiger Pfadparameter, wie z. B. NULL oder eine leere Zeichenfolge, übergeben wurde, wird der Rückkehrcode auf CCI_INV_ESQL_PATH_EXPR gesetzt.
nodeObject (Eingabe)
Gibt den Verarbeitungsknoten des Nachrichtenflusses an, dem der ESQL-Pfadausdruck angehört. Dieser Zeiger wird an die Implementierungsfunktion cniCreateNodeContext weitergegeben. Dieser Parameter darf nicht NULL sein.
dataSourceName (Eingabe)
Der ODBC-Datenquellenname, der verwendet wird, wenn die Anweisung auf eine externe Datenbank verweist. NULL ist zulässig.
path (Eingabe)
Zeiger auf eine mit NULL beendete Zeichenfolge von 'CciChars'. Mit diesem Parameter wird der ESQL-Pfadausdruck angegeben, der, wie vom Syntaxdiagramm der ESQL-Feldreferenz definiert, erstellt werden soll. Allerdings kann er keine lokalen ESQL-Variablen, ESQL-Referenzvariablen, benutzerdefinierten Funktionen und ESQL-Namespacekonstanten enthalten, da diese nicht deklariert werden können. Dieser Parameter darf nicht NULL sein.

Rückgabewerte

Bei Erfolg wird die Adresse des Objekts 'SQLPathExpression' zurückgegeben. Wenn ein Fehler auftritt wird CCI_NULL_ADDR zurückgegeben, und der Rückkehrcodeparameter gibt die Fehlerursache an. Sobald 'SQLPathExpression' nicht mehr benötigt wird (normalerweise wenn der Knoten gelöscht wurde), sollte es gelöscht werden, indem cniSqlDeletePathExpression aufgerufen wird.

Beispiel

Im Knotenbeispiel zum Umschalten wird gezeigt, wie mithilfe von Funktionen wie cniFirstChild zu einem Syntaxelement navigiert werden kann. Der folgende Code kann verwendet werden, um dasselbe Ergebnis zu erzielen.

In der Funktion '_Switch_createNodeContext' wird CciSqlPathExpression für die spätere Verwendung erstellt.

 {
        CciChar ucsPathExpressionString[32];
        char*   mbPathExpressionString = "InputBody.Request.type";
        /* Pfadzeichenfolge in Unicode konvertieren*/
        cciMbsToUcs(
                  NULL,
                  mbPathExpressionString,
                  ucsPathExpressionString,
                  32,
                  BIP_DEF_COMP_CCSID);
        
        p->pathExpression = 
                    cniSqlCreateReadOnlyPathExpression(
                            NULL,
                            nodeObject,
                            NULL, /*es wird nicht auf die Datenbank verwiesen*/
                            ucsPathExpressionString);
}

Bei diesem Code wird das Hinzufügen des Felds 'CciSqlPathExpression* pathExpression' zum Struct 'NODE_CONTEXT_ST' vorausgesetzt.

Nun CciSqlPathExpression in der Funktion '_Switch_evaluate' verwenden.

CciElement* targetElement = cniSqlNavigatePath(
                           NULL,
                          ((NODE_CONTEXT_ST *)context)->pathExpression,
                           message,
                           localEnvironment,
                           exceptionList,
                           NULL, /*auf Ausgabebaumstrukturen wird nicht verwiesen*/
                           NULL,
                           NULL);
Im Vergleich mit der Verwendung von Funktionen wie beispielsweise cniFirstChild und cniNextSibling bietet diese Methode folgende Vorteile:
  • Der Pfad ist dynamischer: Die Pfadzeichenfolge kann zum Zeitpunkt des Implementierens festgelegt werden, z. B. auf einer Knoteneigenschaft basierend (CciSqlPathExpression kann in der Implementierungsfunktion cniSetAttribute erstellt werden).
  • Während der Navigation zum Element wird nur ein Funktionsaufruf anstatt mehrerer gemacht. Dieses Verfahren wird deutlicher, wenn sich das Zielelement weit innerhalb der Baumstruktur befindet.
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:58

as08031_