17.00 - 17.05 - 例: FNC_GetXMLInfo、FNC_GetXML、およびFNC_SetXML - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

この関数は、XMLパラメータを受け取り、XML値を取得します。これはXMLの戻り値パラメータに文字列を返します。

CREATE FUNCTION xmlUDF1(P1 XML)
RETURNS XML
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!xmlUDF1!xmlUDF1.c';

void xmlUDF1(XML_HANDLE* xml_handle,
             XML_HANDLE* return_handle,
             int*        indicator_thisXML,
             int*        indicator_returnXML,
             char        sqlstate[6],
             SQL_TEXT    extname[129],
             SQL_TEXT    specific_name[129],
             SQL_TEXT    error_message[257] )
{
    FNC_XMLSize_t xmlSize;
    char* xmlBuffer;

    int xmlBufferSize;
    int numLobs;

    /* Get the XML Size. Note we use size + 2 to account for
       the Unicode null termination character. */
     FNC_GetXMLInfo(*xml_handle, &xmlSize, &numLobs); 
  
     if(numLobs == 0) 
    {
      xmlBuffer = (char*)FNC_Malloc(xmlSize + 2);
      xmlBufferSize = xmlSize + 1;

     /* Get the XML Value */
      FNC_GetXML(*xml_handle, xmlBuffer, xmlBufferSize, &xmlSize); 
                                                                                                   
     /* Set the XML string as return value */
      FNC_SetXML(*return_handle, xmlBuffer, xmlSize); 

     *indicator_returnXML = 0;
     FNC_free(xmlBuffer);
    }
}