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

SQL Anywhere 11.0.1 (中文) » UltraLite - C 及 C++ 编程 » 应用程序开发 » 使用嵌入式 SQL 开发应用程序 » 读取数据

 

读取一行

单行查询最多从数据库中检索一行。单行查询 SELECT 语句可在选择列表之后和 FROM 子句之前有一个 INTO 子句。INTO 子句包含一个主机变量的列表,用来接收每个选择列表项的值。主机变量和选择列表项的数目必须相同。主机变量可以和指示符变量一起使用,以指示 NULL 结果。

当执行 SELECT 语句时,数据库服务器检索结果并将其放在主机变量中。

  • 如果查询返回了多行,则数据库服务器返回 SQLE_TOO_MANY_RECORDS 错误。

  • 如果查询没有返回任何行,则返回 SQLE_NOTFOUND 警告。

有关在 SQLCA 结构中返回的错误和警告的详细信息,请参见初始化 SQL 通信区

示例

例如,如果成功地从 employee 表读取了一行,则以下代码段返回 1;如果该行不存在,则返回 0;如果发生错误,则返回 -1。

EXEC SQL BEGIN DECLARE SECTION;
   long int    emp_id;
   char        name[41];
   char        sex;
   char        birthdate[15];
   short int   ind_birthdate;
EXEC SQL END DECLARE SECTION;
int find_employee( long employee )
{
   emp_id = employee;
   EXEC SQL SELECT emp_fname || ' ' || emp_lname,
         sex, birth_date
      INTO :name, :sex, birthdate:ind_birthdate
      FROM "DBA".employee
      WHERE emp_id = :emp_id;
   if( SQLCODE == SQLE_NOTFOUND ) {
      return( 0 ); /* employee not found */
   } else if( SQLCODE < 0 ) {
      return( -1 ); /* error */
   } else {
      return( 1 ); /* found */
   }
}