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 リファレンス » SQL の使用 » SQL 文 » SQL 文 (P ~ Z)

 

SET 文

この文は、SQL 変数に値を代入するために使用します。

構文
SET identifier = expression
備考

SET 文は新しい値を変数に代入します。この変数は、CREATE VARIABLE 文または DECLARE 文を使って事前に作成されたものであるか、プロシージャの OUTPUT パラメータであることが必要です。この変数名は、オプションとして、名前の前に @ を付ける Transact-SQL の規則を使用できます。次に例を示します。

SET @localvar = 42

変数は、カラム名を使用できる場所なら SQL 文のどこででも使うことができます。変数と同じ名前のカラム名がある場合は、変数値を使用できます。

変数は、現在の接続に固有でローカルなもので、データベースとの接続を切断したり、DROP VARIABLE 文を使用すると自動的に消えます。変数は、COMMIT 文や ROLLBACK 文の対象になりません。

変数は、Embedded SQL プログラムから INSERT または UPDATE 文の対象となるサイズの大きなテキストまたはバイナリ・オブジェクトを作成するために必要です。これは、Embedded SQL のホスト変数のサイズが 32,767 バイトに制限されているためです。

パーミッション

なし

関連する動作

なし

参照
標準と互換性
  • SQL/2003   永続的ストアド・モジュール機能。

この単純な例では、「birthday」という変数の作成を表示し、SET を使用して日付を CURRENT DATE に設定します。

CREATE VARIABLE @birthday DATE;
    SET @birthday = CURRENT DATE;

次のコード・フラグメントは、データベースに大きいテキスト値を挿入します。

EXEC SQL BEGIN DECLARE SECTION;
DECL_VARCHAR( 500 ) buffer;
/* Note: maximum DECL_VARCHAR size is 32765 */
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG VARCHAR;
EXEC SQL SET hold_blob = '';
for(;;) {
   /* read some data into buffer ... */
   size = fread( buffer, 1, 5000, fp );
   if( size <= 0 ) break;
   /* Does not work if data contains null chars */
   EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;

次のコード・フラグメントは、データベースに大きいバイナリ値を挿入します。

EXEC SQL BEGIN DECLARE SECTION;
DECL_BINARY( 5000 ) buffer;
EXEC SQL END DECLARE SECTION;

EXEC SQL CREATE VARIABLE hold_blob LONG BINARY;
EXEC SQL SET hold_blob = '';
for(;;) {
   /* read some data into buffer ... */
   size = fread( &(buffer.array), 1, 5000, fp );
   if( size <= 0 ) break;
   buffer.len = size;
   /* add data to blob using concatenation */
   EXEC SQL SET hold_blob = hold_blob || :buffer;
}
EXEC SQL INSERT INTO some_table VALUES ( 1, hold_blob );
EXEC SQL DROP VARIABLE hold_blob;