执行准备好的 SQL

在您准备语句之后,您可多次执行它。使用 EXECUTE 语句执行不是 SELECT 语句的那些语句,以及仅返回一行的 SELECT 语句。

下列 GBase 8s ESQL/C 代码准备并执行银行账户的多语句更新:
EXEC SQL BEGIN DECLARE SECTION;
          char bigquery[270] = "begin work;";
          EXEC SQL END DECLARE SECTION;
          stcat ("update account set balance = balance + ? where ", bigquery);
          stcat ("acct_number = ?;', bigquery);
          stcat ("update teller set balance = balance + ? where ", bigquery);
          stcat ("teller_number = ?;', bigquery);
          stcat ("update branch set balance = balance + ? where ", bigquery);
          stcat ("branch_number = ?;', bigquery);
          stcat ("insert into history values(timestamp, values);", bigquery);
          
          EXEC SQL prepare bigq from :bigquery;
          
          EXEC SQL execute bigq using :delta, :acct_number, :delta,
          :teller_number, :delta, :branch_number;
          
          EXEC SQL commit work;

EXECUTE 语句的 USING 子句提供主变量的列表,以其值替代准备好的语句中的问号。如果 SELECT(或 EXECUTE FUNCTION)仅返回一行,则您可使用 EXECUTE 的 INTO 子句来指定接收这些值的主变量。