例: FNC_GetXMLByteとFNC_SetXMLByte - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

次のUDFはXMLパラメータを入力として取り、バイナリ形式でXML値を取得し、バイナリ形式で戻りXML値を設定します。XMLサイズは小さく、単純な読み取りを使用して読み取るのに十分であると想定されています。

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

void xmlUDF6(XML_HANDLE* xml_handle,
             XML_HANDLE* return_handle,
             int* indicator_thisXML,
             int* indicator_returnValue,
             char    sqlstate[6],
             SQL_TEXT    extname[129],
             SQL_TEXT    specific_name[129],
             SQL_TEXT    error_message[257] )
{
     FNC_XMLSize_t xmlSize;
     byte* xmlBuffer;
     FNC_XMLSize_t xmlBufferSize;
     int numLobs;

    /* Get the XML Size */
      FNC_GetXMLInfo(*xml_handle, &xmlSize, &numLobs); 

     if(numLobs ==1 )
     {  /* Return null if a LOB is passed in */
        *indicator_returnValue = -1;
         return;
     }

    /* Read the XML value */
     xmlBuffer = (byte*)FNC_Malloc(xmlSize);
     xmlBufferSize = xmlSize;
      FNC_GetXMLByte(*xml_handle,xmlBuffer, xmlBufferSize, &xmlSize); 
                                                                                                                           
     /* Set the return value */
      FNC_SetXMLByte(*return_handle, xmlBuffer, xmlSize); 
    *indicator_returnValue = 0;
     FNC_free(xmlBuffer);
}