Code Example Using Security and Error Message APIs

There are two utility Oracle LSH APIs that you call in conjunction with other Oracle LSH APIs:

  • CDR_PUB_API_INITIALIZATION. This API is required for developing and running programs that call any Oracle LSH API from outside Oracle LSH. See Calling the Security API Package for further information.
  • CDR_PUB_MSG_PUB. This API returns error messages from other Oracle LSH APIs called in the same package.

The following code provides an example of calling the API to define a Work Area and each of the utility APIs.

Example 1-1 Program that Calls the API to Define a Work Area and Calls the Security and Error Message APIs

CDR_PUB_DF_WORKAREA.CREATEWORKAREA (
                   P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
X_RETURN_STATUS  => X_RETURN_STATUS,
X_MSG_COUNT    => X_MSG_COUNT,
X_MSG_DATA    => X_MSG_DATA,
PIO_SOURCECDRNAMING =>VARWANSOBJ,
PIO_WORKAREAOBJTYPE =>VARWAOBJ,
PI_DEFCLASSIFICATIONCOLL => NULL);
      IF X_RETURN_STATUS <> 'S' THEN
       DBMS_OUTPUT.PUT_LINE('ERROR FOUND IN CREATEPROGRAM');
     END IF ;
     X_MSG_COUNT := CDR_PUB_MSG_PUB.COUNT_MSG(                                  
                   P_API_VERSION=>1,                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL
                   );
     IF X_MSG_COUNT >= 1 THEN
     FOR I IN 1..X_MSG_COUNT LOOP
        IF I =1 THEN
          X_MSG_DATA := CDR_PUB_MSG_PUB.GET(
                    P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
P_MSG_INDEX =>CDR_PUB_MSG_PUB.G_FIRST,
P_ENCODED =>CDR_PUB_DEF_CONSTANTS.G_FALSE);
        ELSIF I = X_MSG_COUNT THEN
          X_MSG_DATA := CDR_PUB_MSG_PUB.GET(
                    P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
P_MSG_INDEX =>CDR_PUB_MSG_PUB.G_LAST,
P_ENCODED =>CDR_PUB_DEF_CONSTANTS.G_FALSE);
        ELSE
          X_MSG_DATA := CDR_PUB_MSG_PUB.GET(
                   P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
P_MSG_INDEX =>CDR_PUB_MSG_PUB.G_NEXT,
P_ENCODED =>CDR_PUB_DEF_CONSTANTS.G_FALSE);
        END IF ;
        DBMS_OUTPUT.PUT_LINE('MESSAGE:'||I ||' : '|| X_MSG_DATA);
     END LOOP;
    END IF;
    CDR_PUB_API_INITIALIZATION.DISABLEAPIS(
                   P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
X_RETURN_STATUS  => X_RETURN_STATUS,
X_MSG_COUNT    => X_MSG_COUNT,
X_MSG_DATA    => X_MSG_DATA);
EXCEPTION
WHEN OTHERS THEN
  CDR_PUB_API_INITIALIZATION.DISABLEAPIS(
                   P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
X_RETURN_STATUS  => X_RETURN_STATUS,
X_MSG_COUNT    => X_MSG_COUNT,
X_MSG_DATA    => X_MSG_DATA);
END MY_PROCEDURE;
 
BEGIN -- PACKAGE INIT BLOCK
CDR_PUB_API_INITIALIZATION.ENABLEAPIS(
                   P_API_VERSION=>1,
                   P_INIT_MSG_LIST=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
P_COMMIT=>CDR_PUB_DEF_CONSTANTS.G_FALSE,
                   P_VALIDATION_LEVEL=>CDR_PUB_DEF_CONSTANTS.G_VALID_LEVEL_FULL,
X_RETURN_STATUS  => X_RETURN_STATUS,
X_MSG_COUNT    => X_MSG_COUNT,
X_MSG_DATA    => X_MSG_DATA);
END MY_PACKAGE;