cniSqlCreateReadOnlyPathExpression

Cria um objeto SqlPathExpression que representa o caminho especificado pelo argumento de caminho. O caminho navegado não criará elementos de caminho se eles ainda não existirem. Essa função retorna um ponteiro para o objeto PathExpression, que é utilizado como entrada para as funções que navegam o caminho, isto é, a família cniSqlNavigatePath.

Como um código extra envolvido na criação da expressão, se for necessário utilizar a mesma expressão de caminho para cada mensagem, chame essa função uma vez e utilize a CciSqlPathExpression* que é retornada em uma chamada a cniSqlNavigate para cada mensagem. Você pode utilizar CciSqlPathExpression* em encadeamentos diferentes daqueles em que ele foi criado.

Sintaxe

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

Parâmetros

returnCode (saída)
Uma entrada de ponteiro NULL significa que o nó definido pelo usuário não manipulará os erros. Quaisquer exceções lançadas durante a execução desta chamada serão lançadas novamente para o próximo nó acima no fluxo. Se a entrada não for NULL, a saída significará o status de êxito da chamada. Se uma exceção ocorrer durante a execução, *returnCode será definido como CCI_EXCEPTION na saída. Uma chamada para cciGetLastExceptionData fornecerá detalhes da exceção. Se um parâmetro nodeObject inválido foi transmitido, o returnCode será configurado como CCI_INV_NODE_OBJECT. Se um parâmetro de caminho inválido, como uma cadeia vazia ou NULL, foi transmitido, o returnCode será configurado como CCI_INV_ESQL_PATH_EXPR.
nodeObject (entrada)
Especifica o nó de processamento do fluxo de mensagens pertencente à Expressão de Caminho do ESQL. Esse ponteiro é transmitido à função de implementação cniCreateNodeContext. Esse parâmetro não deve ser NULL.
dataSourceName (entrada)
O nome da origem de dados ODBC que será utilizado se a instrução fizer referência a um banco de dados externo. NULL é permitido.
path (entrada)
Ponteiro para uma cadeia finalizada NULL de CciChars. Esse parâmetro especifica a expressão de caminho ESQL a ser criada, como definida pelo diagrama de sintaxe de referência de campo ESQL. Ele não pode incluir variáveis ESQL locais, variáveis de referência de ESQL, funções definidas pelo usuário ou constantes de espaço de nomes ESQL, porque elas não podem ser declaradas. Esse parâmetro não deve ser NULL.

Valores de Retorno

Se bem-sucedidos, o endereço do objeto SQLPathExpression será retornado. Se um erro ocorrer, CCI_NULL_ADDR será retornado e o parâmetro de código de retorno indica a razão do erro. Quando a SQLPathExpression não é mais necessária (normalmente, quando o nó é excluído), chame cniSqlDeletePathExpression para excluí-lo.

Exemplo

A amostra de nó de chave mostra como navegar para um elemento da sintaxe utilizando funções como cniFirstChild. O código a seguir pode ser utilizado para conseguir o mesmo resultado.

Na função _Switch_createNodeContext, crie a CciSqlPathExpression para utilização posterior.

 {
        CciChar ucsPathExpressionString[32];
        char*   mbPathExpressionString = "InputBody.Request.type";
        /* Converter a cadeia de caminho para unicode*/
        cciMbsToUcs(
                  NULL,
                  mbPathExpressionString,
                  ucsPathExpressionString,
                  32,
                  BIP_DEF_COMP_CCSID);
        
        p->pathExpression =
                    cniSqlCreateReadOnlyPathExpression(
                            NULL,
                            nodeObject,
                            NULL, /* não referenciar o Banco de Dados*/
                            ucsPathExpressionString);
}

Esse código assume a inclusão do campo CciSqlPathExpression* pathExpression na estrutura NODE_CONTEXT_ST.

Agora utilize a CciSqlPathExpression na função _Switch_evaluate.

CciElement* targetElement = cniSqlNavigatePath(
                           NULL,
                          ((NODE_CONTEXT_ST *)context)->pathExpression,
                           message,
                           localEnvironment,
                           exceptionList,
                           NULL, /* não referenciar nenhuma árvore de saída*/
                           NULL,
                           NULL);
Essa abordagem, em vez de utilizar funções como cniFirstChild e cniNextSibling, tem as seguintes vantagens:
  • O caminho é mais dinâmico - a cadeia de caminhos poderá ser determinada no tempo de implementação, com base em uma propriedade do nó (você poderá criar a CciSqlPathExpression na função de implementação cniSetAttribute).
  • Durante a navegação no elemento, é feita apenas uma chamada de função. Essa técnica torna-se mais evidente quando o elemento de destino é profundo na estrutura em árvore.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:13:09

as08031_