1:不使用游标的嵌入式sql
(1):如果一个sql语句不产生结果,则就不需要主语言处理,则就不需要使用游标
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200412122644699-1630014131.png)
(2):如果一个sql语句的结果不是元组的集合,则主语言可以一次性处理,则就不需要使用游标
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200412122820485-1684158470.png)
【注】非交互形式的更新语句,也就是不需要和用户进行交互,直接提交到服务器端删除数据即可
2:使用游标的嵌入式sql
使用游标的情况:
1:查询结果为多个元组的select语句
2:交互式更新语句
游标的说明:
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411211902364-181980025.png)
第一种形式:定义只读游标
第二种形式:定义可更新游标
缺省时:定义为只读游标
第二种形式可以用of+列名,进一步限定可更新的列
缺省时所有列都可以更新
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411212257701-144808422.png)
【注:】
其select语句不能使用order by 子句和union运算 ,
因为可更新游标需要定位到当前更新的行 ,
而排序以及和并操作将改变元组的逻辑位置
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411212415602-1170690917.png)
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411212517123-1302534806.png)
【注:】
也可以直接是n或者是-n ,
分别表示向前或向后推进n条记录
【注:】即为空,此时sqlcode!=0
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411213124355-1000541933.png)
最后关闭游标
![](https://img2020.cnblogs.com/blog/1449115/202004/1449115-20200411213248480-568851764.png)