次の関数はXML型のパラメータを受け取り、XMLのBLOB表現を取得します。これはユーザーにBLOBを返します。
CREATE FUNCTION xmlUDF5(P1 XML) RETURNS BLOB AS LOCATOR NO SQL PARAMETER STYLE SQL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!xmlUDF5!xmlUDF5.c'; void xmlUDF5(XML_HANDLE *xml_handle, LOB_RESULT_LOCATOR *return_blob, int* indicator_thisXML, int* indicator_returnLOB, char sqlstate[6], SQL_TEXT extname[129], SQL_TEXT specific_name[129], SQL_TEXT error_message[257] ) { LOB_LOCATOR xmlBlob; BYTE buffer[100000]; LOB_CONTEXT_ID id; FNC_LobLength_t actlen; int trunc_err = 0; FNC_XMLSize_t xmlSize; int numLobs; /* Get the XML Size */ FNC_GetXMLInfo(*xml_handle, &xmlSize, &numLobs); if(numLobs ==1 ) { /* Read XML value */ FNC_GetXMLBlob(*xml_handle,&xmlClob); /* Use LOB FNC calls to read the XML BLOB and return it */ FNC_LobOpen(*xmlBlob, &id, 0, 0); while( FNC_LobRead(id, buffer, 100000, &actlen) == 0 && !trunc_err) trunc_err = FNC_LobAppend(*return_blob, buffer, actlen, &actlen); FNC_LobClose(id); *indicator_returnLob = 0; } }