17.00 - 17.05 - 構文 - 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
日本語 (日本)
void *
FNC_CallSP( SQL_TEXT *SP_Name,
            int       argc,
            void     *argv[],
            int       ind[],
            parm_t    dtype[],
            char     *sqlstate )
SQL_TEXT *SP_Name
呼び出すストアド プロシージャの名前。
  • この名前は、ストアド プロシージャが属するデータベースの名前によって修飾できます。
  • 名前は128文字まで使用できます。
int argc
ストアド プロシージャに渡す引数のカウント。この値は、呼び出し対象のストアド プロシージャに渡されるはずのパラメータの数と一致していなければなりません。
void *argv[]
呼び出し対象のストアド プロシージャとの間でやり取りする引数値のエントリ ポイント。argv内の要素の数は、呼び出し対象のストアド プロシージャが想定するパラメータの数と一致していなければなりません。
int ind[]
呼び出し対象のストアド プロシージャの引数に同じ順序で対応するインジケータ。
argv[]要素がINまたはINOUT引数の場合の値
  • NULLの場合、ind[]内の対応する要素を-1に設定します。
  • NULLでない場合、ind[]内の対応する要素を0に設定します。
argv[]の要素が呼び出し対象のストアド プロシージャのOUTまたはINOUT引数である場合、対応するind[]の要素の値は、前述のルールに従って、呼び出し対象のストアド プロシージャによって戻されます。
parm_t dtype[]
ストアド プロシージャとやり取りする各引数のデータ型、属性、および方向(IN、OUT、またはINOUT)。
parm_t構造体は、sqltypes_td.hで以下のように定義されています。
typedef struct parm_t
{
  dtype_et    datatype;
  dmode_et    direction;
  charset_et  charset;
  union {
    long  length;
    int   intervalrange;
    int   precision;
    struct {
      int  totaldigit;
      int  fracdigit;
    } range;
  } size;
} parm_t;
条件
  • datatypeは、引数のデータ型を指定します。sqltypes_td.hヘッダー ファイルは、dtype_etを以下のように定義しています。
    typedef int dtype_et;

    有効な値は、sqltypes_td.hのdtype_en列挙定数で以下のように定義されています。

    typedef enum dtype_en {
        UNDEF_DT=0,
        CHAR_DT=1,
        VARCHAR_DT=2,
        CLOB_REFERENCE_DT=34,
        BYTE_DT=3,
        VARBYTE_DT=4,
        BLOB_REFERENCE_DT=33,
        GRAPHIC_DT=5,
        VARGRAPHIC_DT=6,
        BYTEINT_DT=7,
        SMALLINT_DT=8,
        INTEGER_DT=9,
        BIGINT_DT=36,
        REAL_DT=10,
        DECIMAL1_DT=11,
        DECIMAL2_DT=12,
        DECIMAL4_DT=13,
        DECIMAL8_DT=14,
        DECIMAL16_DT=37,
        NUMBER_DT=38,
        DATE_DT=15,
        TIME_DT=16,
        TIMESTAMP_DT=17,
        INTERVAL_YEAR_DT=18,
        INTERVAL_YTM_DT=19,
        INTERVAL_MONTH_DT=20,
        INTERVAL_DAY_DT=21,
        INTERVAL_DTH_DT=22,
        INTERVAL_DTM_DT=23,
        INTERVAL_DTS_DT=24,
        INTERVAL_HOUR_DT=25,
        INTERVAL_HTM_DT=26,
        INTERVAL_HTS_DT=27,
        INTERVAL_MINUTE_DT=28,
        INTERVAL_MTS_DT=29,
        INTERVAL_SECOND_DT=30,
        TIME_WTZ_DT=31,
        TIMESTAMP_WTZ_DT=32,
        UDT_DT=35,
        FNC_DATATYPESETSIZE=39
    } dtype_en;
  • 引数の方向(IN、OUT、またはINOUT)を指定します。

    sqltypes_td.hヘッダー ファイルは、dmode_etを以下のように定義しています。

    typedef int dmode_et;

    有効な値は、sqltypes_td.hのdmode_en列挙定数で以下のように定義されています。

    typedef enum dmode_en
       {
          UNDEF_PM=0,
          IN_PM=1,
          INOUT_PM=2,
          OUT_PM=3
       } dmode_en;
  • charsetは、CHARまたはVARCHARデータの文字セットを指定します。

    sqltypes_td.hヘッダー ファイルは、charset_etを以下のように定義しています。

    typedef int charset_et;

    有効な値は、sqltypes_td.hのcharset_en列挙定数で以下のように定義されています。

    typedef enum charset_en
       {
          UNDEF_CT=0,
          LATIN_CT=1,
          UNICODE_CT=2,
          KANJISJIS_CT=3,
          KANJI1_CT=4
       } charset_en;
  • size.lengthは、CHAR、VARCHAR、BYTE、またはCHARACTER CHARACTER SET GRAPHIC型の長さを指定します。
  • size.intervalrangeは、INTERVAL型の範囲を指定します。例えば、INTERVAL YEAR(4)の場合は4です。
  • size.precisionは、TIME型またはTIMESTAMP型の精度を指定します。例えば、TIME(4)の場合は4です。
  • size.range.totaldigitは、DECIMAL (m,n)型またはINTERVAL SECOND (m,n)型の値mを指定します。
  • size.range.fracdigitは、DECIMAL (m,n)型またはINTERVAL SECOND (m,n)型の値nを指定します。
char *sqlstate
呼び出し対象のストアド プロシージャの実行の結果を戻すために使用するchar[6]配列へのポインタ。