单行查询最多从数据库中检索一行。单行查询 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 */ } } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |