Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » 如何使用嵌入式 SQL 读取数据

 

嵌入式 SQL 中的游标

游标用于从其结果集中具有多个行的查询中检索行。游标是 SQL 查询的句柄或标识符,也是结果集中的一个位置。

嵌入式 SQL 中的游标管理涉及以下步骤:

  1. 使用 DECLARE CURSOR 语句声明特定 SELECT 语句的游标。

  2. 使用 OPEN 语句打开游标。

  3. 使用 FETCH 语句一次一行地从游标中检索结果。

  4. 读取行,直到返回 [未找到行] 警告。

    在 SQLCA 结构中返回错误和警告。

  5. 使用 CLOSE 语句关闭游标。

缺省情况下,在事务(COMMIT 或 ROLLBACK 上)的结尾会自动关闭游标。用 WITH HOLD 子句打开的游标对于后续事务保持打开状态,直到它们被显式关闭。

以下是游标用法的简单示例:



void print_employees( void )
{
  EXEC SQL BEGIN DECLARE SECTION;
  char      name[50];
  char      sex;
  char      birthdate[15];
  a_sql_len ind_birthdate;
  EXEC SQL END DECLARE SECTION;
  EXEC SQL DECLARE C1 CURSOR FOR
    SELECT GivenName || ' ' || Surname, Sex, BirthDate FROM Employees;
  EXEC SQL OPEN C1;
  for( ;; ) 
  {
    EXEC SQL FETCH C1 INTO :name, :sex, :birthdate:ind_birthdate;
    if( SQLCODE == SQLE_NOTFOUND ) 
    {
      break;
    } 
    else if( SQLCODE < 0 ) 
    {
      break;
    }

    if( ind_birthdate < 0 ) 
    {
      strcpy( birthdate, "UNKNOWN" );
    }
    printf( "Name: %s Sex: %c Birthdate: %s\n", name, sex, birthdate );
  }
  EXEC SQL CLOSE C1;
}
 游标定位
 游标定位问题
 另请参见