Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
为 SQL 变量赋值。
SET identifier = expression
SET 语句为变量赋新值。必须是以前用 CREATE VARIABLE 语句或 DECLARE 语句所创建的变量,或者必须是过程的 OUTPUT 参数。变量名称可以使用以下 Transact-SQL 约定:在名称前使用 @ 符号。例如:
SET @localvar = 42
在 SQL 语句中,只要是允许使用列名的位置,就可以使用变量。如果列名和变量名相同,则使用变量值。
变量是当前连接的本地对象,当您与数据库断开连接或使用 DROP VARIABLE 语句时消失。它们不受 COMMIT 或 ROLLBACK 语句的影响。
从嵌入式 SQL 程序中为 INSERT 或 UPDATE 语句创建大文本或二进制对象时需要使用变量,因为嵌入式 SQL 主机变量仅限于 32767 个字节。
无。
SQL/2008 SET 语句是可选 SQL/2008 语言功能 P002 "计算完整性" 的一部分。
Transact-SQL Adaptive Server Enterprise 支持 SET 语句。在 ASE 中,可使用一条 SET 语句为多个变量赋值,其中各个赋值子句以逗号分隔。
此简单示例显示了名为 birthday 的变量的创建,并使用 SET 来将日期设置为 CURRENT DATE。
CREATE VARIABLE @birthday DATE; SET @birthday = CURRENT DATE;
下面这段代码向数据库中插入一个大文本值。
EXEC SQL BEGIN DECLARE SECTION; DECL_VARCHAR( 5000 ) 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;