SET CONNECTION - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/xqq1557098602407.ditamap
dita:ditavalPath
ja-JP/xqq1557098602407.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

目的

既存のセッション接続を新規の接続に変更します。

呼び出し

実行可能形式。

埋め込みSQLのみ。

構文

SET CONNECTION { connection_name | :connection_name_variable }
connection_name
現在の接続が変更される接続変数の名前を指定します。
:connection_name_variable
接続名を含んでいるホスト変数を指定します。
先行コロン文字は必須です。

ANSI準拠

SET CONNECTIONは、ANSI/ISO SQL:2011に準拠しています。

許可

なし。

ルール

SET CONNECTIONは、以下の場合には無効です。
  • 現在のセッションに接続名がないため、単一セッション モードである。実行時エラーが起きて、現在の接続が有効のままである。
  • DECLARE CURSOR文によって指定されたカーソルリクエスト内である。
  • PREPAREまたはEXECUTE IMMEDIATE文によって指定された動的リクエスト内である。

試行したSET CONNECTIONが失敗した場合、現在の接続にconnection_nameがない限り、現在のセッションはありません。

現在の接続が切断された場合、SET CONNECTION文を実行して、バックグラウンド接続を現在の接続にしなければなりません。

各接続名は固有でなければならず(最大30バイト)、大文字小文字を区別します。

:namevarは、30バイト以内の固定長または可変長の文字変数でなければなりません。

SET CONNECTIONおよびマルチセッション プログラミング

SET CONNECTIONは、マルチセッション プログラミングで使用するように設計されており、アプリケーションが複数の並行セッション間で接続を切り替えることができます。

例1 - 3

以下のRDTINフィールドは、これらの例において重要です。

RDTINフィールド 必須の指定
RdtCType 150に設定。
RdtVersn 10に設定。
RdtExt ’Y’に設定。拡張機能領域の存在を示す。
RdtXTotL RDTXCONM拡張機能領域のサイズを含む。

さらに、RdtX007 (RDTXCONM)構造は、接続名と通信するので、拡張機能領域のいずれかを組み込む必要があります。

例: セッション接続の確立

以下の例では、明示的に指定された接続名を使用してセッション接続を確立します。

EXEC SQL SET CONNECTION SESSION1;

例1でC Preprocessor2によって生成される行

{
static struct {
       SQLInt32 RdtCType;
       SQLInt16 RdtVersn;
       SQLInt16 RdtDec;
       char     RdtUserid[8];
       SQLInt32 RdtEntty;
       char     *RdtCA;
       char     *RdtDAIn;
       char     *RdtDAOut;
       char     *RdtSql;
       char     *RdtRtCon;
       SQLInt32 RdtAux1;
       SQLInt32 RdtAux2;
       char     RdtLCS;
       char     RdtComit;
       char     RdtRelse;
       char     RdtExt;
       char     RdtSepBT;
       char     RdtUCStm;
       char     RdtCmpat;
       char     RdtComp;
       SQLInt16 RdtXTotL;
       char     RdtXFill[2];
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt32 RdtXCode;
              } RdtX005;
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt16 RdtXConL;
              char     RdtXConT[30];
              } RdtX007;
       } RDTIN013 =
       {150,10,0,{' '},0,0,0,0,0,0,0,0,'N','B','N','Y','N','N',' ','C',
       48,{' '},{8,5,255},{36,7,8,'S','E','S','S','I','O','N','1'}};
RDTIN013.RdtCA = (char *)(&sqlca);
RDTIN013.RdtRtCon = SQL_RDTRTCON;
TDARDI(&RDTIN013);
SQL_RDTRTCON = RDTIN013.RdtRtCon;
  }

例2

以下の例では、ホスト変数connamevによってSET CONNECTIONに渡されるVARCHAR接続名を使用してセッション接続を確立します。

EXEC SQL SET CONNECTION :CONNAMEV;

例2でC Preprocessor2によって生成される行

{
static struct {
       SQLInt32 RdtCType;
       SQLInt16 RdtVersn;
       SQLInt16 RdtDec;
       char     RdtUserid[8];
       SQLInt32 RdtEntty;
       char     *RdtCA;
       char     *RdtDAIn;
       char     *RdtDAOut;
       char     *RdtSql;
       char     *RdtRtCon;
       SQLInt32 RdtAux1;
       SQLInt32 RdtAux2;
       char     RdtLCS;
       char     RdtComit;
       char     RdtRelse;
       char     RdtExt;
       char     RdtSepBT;
       char     RdtUCStm;
       char     RdtCmpat;
       char     RdtComp;
       SQLInt16 RdtXTotL;
       char     RdtXFill[2];
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt32 RdtXCode;
              } RdtX005;
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt16 RdtXConL;
              char     RdtXConT[30];
              } RdtX007;
       } RDTIN014 =
       {150,10,0,{' '},0,0,0,0,0,0,0,0,'N','B','N','Y','N','N',' ','C',
       48,{' '},{8,5,255},{36,7,}};
RDTIN014.RdtX007.RdtXConL = CONNAMEV.len;
memcpy(RDTIN014.RdtX007.RdtXConT,CONNAMEV.arr,CONNAMEV.len);
RDTIN014.RdtCA = (char *)(&sqlca);
RDTIN014.RdtRtCon = SQL_RDTRTCON;
TDARDI(&RDTIN014);
SQL_RDTRTCON = RDTIN014.RdtRtCon;
  }

例3

以下の例では、ホスト変数connamefによってSET CONNECTIONに渡されるCHAR接続名を使用してセッション接続を確立します。

EXEC SQL SET CONNECTION :CONNAMEF;

例3でC Preprocessor2によって生成される行

{
static struct {
       SQLInt32 RdtCType;
       SQLInt16 RdtVersn;
       SQLInt16 RdtDec;
       char     RdtUserid[8];
       SQLInt32 RdtEntty;
       char     *RdtCA;
       char     *RdtDAIn;
       char     *RdtDAOut;
       char     *RdtSql;
       char     *RdtRtCon;
       SQLInt32 RdtAux1;
       SQLInt32 RdtAux2;
       char     RdtLCS;
       char     RdtComit;
       char     RdtRelse;
       char     RdtExt;
       char     RdtSepBT;
       char     RdtUCStm;
       char     RdtCmpat;
       char     RdtComp;
       SQLInt16 RdtXTotL;
       char     RdtXFill[2];
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt32 RdtXCode;
              } RdtX005;
       struct {
              SQLInt16 RdtXLen;
              SQLInt16 RdtXType;
              SQLInt16 RdtXConL;
              char     RdtXConT[30];
              } RdtX007;
       } RDTIN015 =
       {150,10,0,{' '},0,0,0,0,0,0,0,0,'N','B','N','Y','N','N',' ','C',
       48,{' '},{8,5,255},{36,7,}};
RDTIN015.RdtX007.RdtXConL = strlen(CONNAMEF);
memcpy(RDTIN015.RdtX007.RdtXConT,CONNAMEF,strlen(CONNAMEF));
RDTIN015.RdtCA = (char *)(&sqlca);
RDTIN015.RdtRtCon = SQL_RDTRTCON;
TDARDI(&RDTIN015);
SQL_RDTRTCON = RDTIN015.RdtRtCon;
  }