Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere Embedded SQL » ホスト変数の使用

 

ホスト変数の使用法

ホスト変数は次の場合に使用できます。

  • SELECT、INSERT、UPDATE、DELETE 文で数値定数または文字列定数を書ける場所。

  • SELECT、FETCH 文の INTO 句。

  • ホスト変数は、文名、カーソル名、Embedded SQL 固有の文のオプション名としても使用できます。

  • CONNECT、DISCONNECT、SET CONNECT 文では、ホスト変数はサーバ名、データベース名、接続名、ユーザ ID、パスワード、接続文字列として使用できます。

  • SET OPTION と GET OPTION では、ホスト変数はユーザ ID、オプション名、オプション値として使用できます。

  • ホスト変数は、どの文でもテーブル名、カラム名としては使用できません。

SQLCODE および SQLSTATE ホスト変数

ISO/ANSI 標準を使用することで、Embedded SQL ソース・ファイルの宣言セクション内で次の特別なホスト変数を宣言できます。

long SQLCODE;
char SQLSTATE[6];

使用する場合、これらの変数が設定されるのは、データベース要求を生成する任意の Embedded SQL 文 (DECLARE SECTION、INCLUDE、WHENEVER SQLCODE などを除く EXEC SQL 文) の後になります。

SQLCODE および SQLSTATE ホスト変数は、データベース要求を生成するすべての Embedded SQL 文のスコープで参照可能である必要があります。

詳細については、SQL プリプロセッサの sqlpp -k オプションの説明を参照してください。

次に示すのは、有効な ESQL です。

EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
long SQLCODE;
EXEC SQL END DECLARE SECTION;
sub1() {
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 EXEC SQL END DECLARE SECTION;
 exec SQL CREATE TABLE ...
}

次に示す ESQL は、有効ではありません。

EXEC SQL INCLUDE SQLCA;
sub1() {
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 EXEC SQL END DECLARE SECTION;
 exec SQL CREATE TABLE...
}
sub2() {
 exec SQL DROP TABLE...
 // No SQLSTATE in scope of this statement
}