EXEC SQL BEGIN DECLARE SECTION; char disc_up[80]; int cust_num; EXEC SQL END DECLARE SECTION; main() { sprintf(disc_up, "%s %s","update customer ", "set discount = 0.1 where customer_num = ?"); EXEC SQL prepare up1 from :disc_up; while (1) { printf("Enter customer number (or 0 to quit): "); scanf("%d", cust_num); if (cust_num == 0) break; EXEC SQL execute up1 using :cust_num; } }
如同 SQL 语句高速缓存一样,准备好的语句可降低重新优化同一查询计划的频度,从而节约在一些上下文中的资源。准备好的语句和语句高速缓存 部分讨论综合地使用准备好的 DML 语句、游标和 SQL 语句高速缓存或提升查询性能的替代技术。