FNC_SetVarCharLength - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/rin1593638965306.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

データ型がVARCHARの、外部ストアド プロシージャの出力パラメータの長さ、またはUDFやUDMの結果の長さをバイト単位で設定します。

構文

void
FNC_SetVarCharLength(void *outputString,
                     int   outputStringLength);

構文要素

outputString
データ型がVARCHARの、外部ストアド プロシージャの出力パラメータ、またはUDFやUDMの結果へのポインタです。
outputStringLength
outputStringの参照先の文字列の長さです。

使用上の注意

通常、データベースでは、外部ルーチンの出力パラメータや結果の長さを判断するために、strlenを使用します。出力文字列にNULLが含まれている場合は、FNC_SetVarCharLengthを使用して、出力文字列の長さを明示的に設定できます。FNC_SetVarCharLengthを呼び出した場合、データベースは外部ルーチンの出力パラメータや結果の長さを取得するためにstrlenを使用しません。

outputString引数の参照先のデータがVARCHARでない場合や、outputStringLengthが不正な長さの場合には、未定義のエラーが発生します。

FNC_SetVarCharLengthの使用例

#define SQL_TEXT Latin_Text
#include "sqltypes_td.h"

void dstrrev13(VARCHAR_LATIN *input,
               int            inplen,
               VARCHAR_LATIN *result)
{
   int i;
   for (i=0; i< inplen; i++)
      result[inplen-i-1] = input[i];
}

void strrevdecomp_varchar(VARBYTE       *InputValue,
                          VARCHAR_LATIN *ResultValue,
                          char           sqlstate[6])
{
   dstrrev13(InputValue->bytes, InputValue->length, ResultValue);
   FNC_SetVarCharLength(ResultValue,InputValue->length);
}