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 嵌入式 SQL » 使用主机变量

 

主机变量的用法

主机变量可用于以下环境中:

  • 位于任何允许使用数字或字符串常量的位置的 SELECT、INSERT、UPDATE 和 DELETE 语句。

  • SELECT和 FETCH 语句的 INTO 子句。

  • 主机变量也可用来代替语句名、游标名或嵌入式 SQL 特定语句中的选项名。

  • 对于 CONNECT、DISCONNECT 和 SET CONNECT 语句,可以用主机变量代替服务器名、数据库名、连接名、用户 ID、口令或连接字符串。

  • 对于 SET OPTION 和 GET OPTION,可以用主机变量代替用户 ID、选项名或选项值。

  • 不能用主机变量代替任何语句中的表名或列名。

SQLCODE 和 SQLSTATE 主机变量

ISO/ANSI 标准允许嵌入式 SQL 源文件在声明部分中声明以下特殊主机变量:

long SQLCODE;
char SQLSTATE[6];

如果使用这些变量,则在进行数据库请求的任何嵌入式 SQL 语句(DECLARE SECTION、INCLUDE、WHENEVER SQLCODE 等之外的 EXEC SQL 语句)之后设置这些变量。

SQLCODE 和 SQLSTATE 主机变量必须在生成数据库请求的每个嵌入式 SQL 语句的范围内可见。

有关详细信息,请参见SQL 预处理器中 sqlpp -k 选项的说明。

下面是有效的嵌入式 SQL:

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 ...
}

下面是无效的嵌入式 SQL:

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
}