此语句用于向 SQL 变量赋值。
SET identifier = expression
SET 语句为变量赋新值。必须是以前用 CREATE VARIABLE 语句或 DECLARE 语句所创建的变量,或者必须是过程的 OUTPUT 参数。变量名称可以使用以下 Transact-SQL 约定:在名称前使用 @ 符号。例如:
SET @localvar = 42 |
在 SQL 语句中,只要是允许使用列名的位置,就可以使用变量。如果列名和变量名相同,则使用变量值。
变量是当前连接的本地对象,当您与数据库断开连接或使用 DROP VARIABLE 语句时消失。它们不受 COMMIT 或 ROLLBACK 语句的影响。
从嵌入式 SQL 程序中为 INSERT 或 UPDATE 语句创建大文本或二进制对象时需要使用变量,因为嵌入式 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 |