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.
CciSqlPathExpression* cniSqlCreateReadOnlyPathExpression( int* returnCode, CciNode* nodeObject, CciChar* dataSourceName, CciChar* path );
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.
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);