17.00 - 17.05 - FNC_SetVarCharLength - 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
日本語 (日本)

目的

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

構文

void
FNC_SetVarCharLength(void *outputString,
                     int   outputStringLength);
void *outputString
データ型がVARCHARの、外部ストアド プロシージャの出力パラメータ、またはUDFやUDMの結果へのポインタです。
int 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);
}