在单一语句准备中受限的语句

通常,您可准备任何数据操作语言(DML)语句。

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;