Purpose
Returns the locator of a LOB attribute of a structured type that is defined to be an input parameter to a UDF, UDM, or external stored procedure.
Syntax
void FNC_GetStructuredInputLobAttribute ( UDT_HANDLE udtHandle, char *attributePath, int *nullIndicator, LOB_LOCATOR *object )
- UDT_HANDLE udtHandle
- the handle to a structured UDT that is defined to be an input parameter to a UDF, UDM, or external stored procedure.
- char *attributePath
- the dot delimited full path to the LOB attribute.
For example, consider a structured UDT called PersonUDT that has an attribute called passport that is a PassportUDT type, which in turn has a LOB attribute called photo. To get the locator of the photo attribute, the full path is “passport.photo”.
- int *nullIndicator
- whether the attribute is null.If the value of nullIndicator is...
- -1, then the attribute is null.
A value of -1 can also indicate that the full path to the specified attribute includes a preceding null attribute.
- 0, then the attribute is not null.
- -1, then the attribute is null.
- LOB_LOCATOR *object
- a pointer to the LOB locator for the LOB attribute.
Usage Notes
You can use FNC_GetStructuredInputLobAttribute to obtain the LOB locator for a distinct type attribute that represents a LOB type.
After you obtain the LOB locator for the LOB attribute, use the LOB access functions, such as FNC_LobOpen, to read the data.
To read the data of a JSON attribute which has its data stored in a LOB, do the following:
- Call FNC_GetStructuredAttributeInfo_EON.
- If the lob_length returned from the previous function call is 0, you must use FNC_GetStructuredAttribute instead of FNC_GetStructuredInputLobAttribute.
- If the lob_length is not 0, use FNC_GetStructuredInputLobAttribute to get a LOB_LOCATOR which represents the LOB where the data of a JSON attribute is stored. You can use this LOB_LOCATOR with the LOB FNC routines to read the data from the JSON attribute.
Restrictions
An external stored procedure that uses CLIv2 to execute SQL must wait for any outstanding CLIv2 requests to complete before calling this function.
Example Using FNC_GetStructuredInputLobAttribute
void document_t_lowerCase( UDT_HANDLE *documentUdt, UDT_HANDLE *resultDocumentUdt, char sqlstate[6]) { LOB_LOCATOR inDocLoc; int nullIndicator; /* Get a LOB_LOCATOR for the input doc attribute */ FNC_GetStructuredInputLobAttribute(*documentUdt, "doc", &nullIndicator, &inDocLoc); if (nullIndicator == -1) { /* the CLOB attribute is set to null if we don't append to it. */ return; } .... }