Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編
目次 索引 前ページ次ページ

第2章 データベースを処理する応用プログラムの開発の概要> 2.1 SQL埋込みCプログラムの作成方法

2.1.3 ホスト変数および標識変数の指定方法

ホスト変は、応用プログラムとデータベースの間でデータの受渡しをするのに使用する変数です。SQL文中でホスト変数と対にして指定し、データの内容がナル値かどうかを表すために使用する変数を、標識変と呼びます。応用プログラムで参照するデータをデータベースから取り出す場合、標識変数には、取り出したデータがナル値かどうかを表す情報が設定されます。逆に、応用プログラムで設定したデータをデータベースに格納する場合には、標識変数には、格納するデータがナル値かどうかを表す情報を設定しておきます。標識変数は、埋込みSQL宣言節で宣言します。宣言の記述方法はホスト変数と同じです。なお、標識変数のデータ型はSMALLINTに対応するデータ型であることが必要です。各ホスト言語でのデータ型と、SQLのデータ型との対応については、“SQLリファレンスガイド”を参照してください。

ホスト変数および標識変数をSQL文中に指定する場合には、変数の前にコロン“:”を付けて指定します。以下にその指定例を示します(ゴシック部がホスト変数または標識変数です)。ただし、SQL文以外の、C言語のステートメント中では、一般のC言語の変数と同じで、コロン“:”は付けません。

標識変数には、SQL文の処理結果が以下のように格納されます。

なお、標識変数を指定していない場合、取り出すデータがナル値になると、SQL文の処理はエラーになります。

例1

ホスト変数の指定例

STOCKおよびHOUSEをホスト変数、QFLAGをSTOCKの標識変数、そして、WFLAGをHOUSEの標識変数として指定します。SQL文中にホスト変数および標識変数を指定する場合は、コロン“:”を付けます。

  EXEC SQL SELECT 在庫数量,倉庫番号                                      
       INTO :STOCK INDICATOR  :QFLAG,                                     
            :HOUSE INDICATOR  :WFLAG                                      
       FROM 在庫表 WHERE  製品番号 = 110;                                 

例2

SQL文以外のC言語のステートメント上のホスト変数の指定例

STOCKをホスト変数、QFLAGをSTOCKの標識変数として使用しています。C言語のステートメントでは、これらの変数にコロン“:”は付けません。

  EXEC SQL FETCH CU1 INTO :STOCK INDICATOR  :QFLAG;                       
  if( QFLAG  == -1) goto p_null ;                                         
  if( STOCK  == 0) goto p_loop ;                                          

■ホスト変数を使用する場合の注意事

文字列型または各国語文字列型の場合、ナル文字(\0)はデータ受渡しの対象にはなりません。そのため、応用プログラムで文字列の終わりを認識するような処理を行う場合、ナル文字を設定しなければなりません。以下に例を示します。

  SQLSTATE[5]='\0';                                                       
  printf( "SQLSTATE:%s\n" , SQLSTATE );                                   

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006