この文は、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; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |