在
GBase 8s
中,您可准备任何单一的
SQL 语句,除下列语句之外:
- ALLOCATE COLLECTION
- ALLOCATE DESCRIPTOR
- ALLOCATE ROW
- CLOSE
- CONNECT
- CREATE FUNCTION FROM
- CREATE PROCEDURE FROM
- CREATE ROUTINE FROM
- DEALLOCATE COLLECTION
- DEALLOCATE DESCRIPTOR
- DEALLOCATE ROW
- DECLARE
- DESCRIBE
- DISCONNECT
- EXECUTE
- EXECUTE IMMEDIATE
- FETCH
- FLUSH
- FREE
- GET DESCRIPTOR
- GET DIAGNOSTICS
- INFO
- LOAD
- OPEN
- OUTPUT
- PREPARE
- PUT
- SET AUTOFREE
- SET CONNECTION
- SET DEFERRED_PREPARE
- SET DESCRIPTOR
- UNLOAD
- WHENEVER
您可准备 SELECT 语句。如果 SELECT 包括 INTO TEMP 子句,则 ESQL/C 程序可执行随同 EXECUTE 语句的准备好的语句。如果它不包括
INTO TEMP 子句,则该语句返回数据行。请使用 DECLARE、OPEN 和 FETCH 游标语句来存取行。
在 ESQL/C 中,准备好的 SELECT 语句可包括 FOR 子句。随同 DECLARE 语句使用此子句来创建一更新游标。下一示例展示在
GBase 8s ESQL/C 中带有 FOR UPDATE 子句的 SELECT 语句:
sprintf(up_query, "%s %s %s",
"select * from customer ",
"where customer_num between ? and ? ",
"for update");
EXEC SQL prepare up_sel from :up_query;
EXEC SQL declare up_curs cursor for up_sel;
EXEC SQL open up_curs using :low_cust,:high_cust;