复习指导
Embedded SQL (ESQL)
- SQL statements embedded in host language
为什么要引入 ESQL?
- SQL存在一定的缺点:
- 需要知道所有的表和列
- 需要知道复杂的SQL语法
- 会出现太多的错误,尤其是 Update 和 Delete
- 为了解决上述问题,出现了 ESQL
exec sql select count(*)
into :host_val
from customers;
语法上的区别:
- 以 “exec sql" 开始, 以";" 结束
- into 子句:在一行中接受select语句的结果
- 宿主变量(程序变量)变量有前缀冒号
ESQL使用步骤:
- 声明部分
- 条件处理
- 在SQL中连接到数据库
- 断开连接语句
用游标选择多行
游标遵循一次一行的原则
- 声明一个游标
- 使用在可能返回多行的ESQL语句中
- 打开一个游标
- 执行选择语句并且打开结果集
- 用游标取一行
- 循环取行,一次一行
- 关闭游标
-
释放结果集
-
结束 fetch循环
条件处理 whenever语句
针对后面的所有语句
条件主要有三个
行为主要有四个
- WHENEVER的控制作用域和流程
这里的s1执行的是 continue动作。控制程序的因素在于文件中语句的位置,而不是控制流程。因为预编译程序是不知道控制流程的。
我们必须小心地使用whenever语句以避免无限循环