cniSqlCreateReadOnlyPathExpression

경로 인수에 지정된 경로를 나타내는 수정할 수 없는 SqlPathExpression 오브젝트를 작성합니다. 수정할 수 없다는 것은 탐색된 경로가 존재하지 않는 경로 요소를 작성하지 않는다는 뜻입니다. 이 함수는 경로를 탐색하는 함수의 입력으로 사용되는 PathExpression 오브젝트(즉, cniSqlNavigatePath 제품군)로 포인터를 돌려보냅니다.

표현식 작성과 관련된 오버헤드가 있으므로 같은 경로 표현식이 모든 메시지에 사용될 경우 이 함수를 한 번 호출해야 하며 리턴한 CciSqlPathExpression*은 각 메시지의 niSqlNavigatec 호출에 사용해야 합니다. 작성되지 않은 다른 스레드에서 CciSqlPathExpression*을 사용할 수 있습니다.

구문

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

매개변수

returnCode(출력)
널(null) 포인터 입력은 사용자 정의 노드가 오류를 처리하지 않음을 의미합니다. 이 호출 실행 중 전달된 모든 예외는 플로우의 다음 업스트림 노드에 다시 전달됩니다. 입력이 널(null)이 아닌 경우, 출력은 호출 성공 상태를 의미합니다. 실행 중 예외가 발생할 경우, *returnCode는 출력에 CCI_EXCEPTION으로 설정됩니다. cciGetLastExceptionData 호출은 예외에 대한 세부사항을 제공합니다. 올바르지 않은 nodeObject 매개변수가 전달되면 returnCode가 CCI_INV_NODE_OBJECT로 설정됩니다. 올바르지 않은 경로 매개변수(예: NULL 또는 빈 문자열)가 전달되면 returnCode가 CCI_INV_ESQL_PATH_EXPR로 설정됩니다.
nodeObject(입력)
ESQL 경로 표현식을 소유할 메시지 플로우 처리 노드를 지정합니다. 이 포인터는 cniCreateNodeContext 구현 함수로 전달됩니다. 이 매개변수는 널(NULL)이 될 수 없습니다.
dataSourceName(입력)
명령문에서 외부 데이터베이스를 참조할 경우에 사용할 ODBC 데이터 소스 이름. 널(NULL)이 허용됩니다.
path(입력)
CciChars의 널(NULL) 종료 문자열 포인터. 로컬 ESQL 변수, ESQL 참조 변수, 사용자 정의 함수, ESQL 네임스페이스 상수 등을 선언할 수 없어서 포함할 수 없다는 점을 제외하고 ESQL 필드 참조 구문 다이어그램에 정의된 대로 작성할 ESQL 경로 표현식을 지정합니다. 그러나 컴퓨터 노드의 한 행 ESQL 경로에서 수행할 수 있으면 이 API에서 수행할 수 있어야 합니다. 이 매개변수는 널(NULL)이 될 수 없습니다.

리턴 값

성공할 경우 SQLPathExpression 오브젝트의 주소가 리턴됩니다. 오류가 발생하면 CCI_NULL_ADDR이 리턴되고 리턴 코드 매개변수가 오류의 원인을 표시합니다. SQLPathExpression이 더 이상 필요하지 않은 경우(일반적으로 노드가 삭제될 때) cniSqlDeletePathExpression을 호출하여 삭제해야 합니다.

스위치 노드 샘플은 cniFirstChild와 같은 함수를 사용하여 구문 요소를 탐색하는 방법을 보여줍니다. 다음 코드를 사용하여 같은 결과를 얻을 수 있습니다.

_Switch_createNodeContext 함수에서 나중에 사용할 수 있도록 CciSqlPathExpression을 작성합니다.

 {
        CciChar ucsPathExpressionString[32];
        char*   mbPathExpressionString = "InputBody.Request.type";
        /* convert our path string to unicode*/
        cciMbsToUcs(
                  NULL,
                  mbPathExpressionString,
                  ucsPathExpressionString,
                  32,
                  BIP_DEF_COMP_CCSID);
        
        p->pathExpression = 
                    cniSqlCreateReadOnlyPathExpression(
                            NULL,
                            nodeObject,
                            NULL, /*we do not reference Database*/
                            ucsPathExpressionString);
}
주: 여기에서는 CciSqlPathExpression* pathExpression 필드를 추가한 NODE_CONTEXT_ST struct로 변경된 것으로 가정합니다.

그러므로 _Switch_evaluate 함수에서 CciSqlPathExpression을 사용할 수 있습니다.

CciElement* targetElement = cniSqlNavigatePath(
                           NULL,
                          ((NODE_CONTEXT_ST *)context)->pathExpression,
                           message,
                                                        destinationList,
                                                        exceptionList,
                           NULL, /*we do not reference any output trees*/
                           NULL,
                           NULL);
cniFirstChild, cniNextSibling 등과 반대로 이 방법을 사용하면 다음과 같은 장점이 있습니다.
  • 보다 동적인 경로 – 전개할 때 노드 속성에 따라 경로 문자열을 판별할 수 있습니다(cniSetAttribute 구현 함수에서 CciSqlPathExpression을 작성할 수 있음).
  • 요소를 탐색하는 동안 여러 개가 아니라 하나의 함수를 호출합니다. 이러한 점은 대상 요소가 트리 구조 내의 깊은 곳에 있을 때 더 잘 나타납니다.
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as08031_