本文概述
- 嵌入式SQL
- DB2应用程序编程
- 主机变量
- SQLCA
- 游标
DB2与SQL类似, 但具有一些高级功能, 主要用于存储大量的Mainframe应用程序数据。
在数据库接口的上下文中, COBOL包括以下术语:
- 嵌入式SQL
- DB2应用程序编程
- 主机变量
- SQLCA
- SQL查询
- 游标
COBOL是主机的语言。 COBOL-DB2应用程序包括DB2和COBOL。
嵌入式SQL语句的工作方式与普通SQL(结构化查询语言)语句类似, 但有一些细微的变化。例如, 查询的输出将定向到一组预定义的变量, 这些变量称为” 主机变量” 。 SELECT语句中放置了一个额外的INTO子句。
DB2应用程序编程以下是编码COBOL-DB2程序时要遵循的规则:
- 必须将所有SQL语句括在EXEC SQL和ENDEXEC之间。
- SQL语句必须在区域B中编码。
- 程序的所有表都必须在INCLUDE语句的” 工作存储” 部分中定义。
- 除INCLUDE和DECLARE TABLE之外的所有SQL语句都必须显示在Procedure Division中。
你可以在COBOL程序的” 文件” 部分, “ 本地存储” 部分, “ 链接” 部分或” 工作存储” 部分中分配主机变量, 并且其级别号介于1到48之间。级别49保留用于VARCHAR数据项。
宿主变量不能是组项目, 但是在宿主结构中, 可以将它们分组。无法重新定义或重命名它们。
如果在嵌入式SQL语句中使用主机变量, 则必须使用冒号(:)指定数据项名称前缀。冒号(:)用于使编译器了解主机变量与具有相同名称的列/表之间的区别。
主机变量可以通过两种方式使用:
- 输入主机变量:用于定义将从COBOL程序传输到数据库的数据。
- 输出主机变量:用于保存从数据库返回到COBOL程序的数据。
DATA DIVISION.WORKING-STORAGE SECTION.EXEC SQLINCLUDE table-nameEND-EXEC.EXEC SQL BEGIN DECLARE SECTIONEND-EXEC.01 STUDENT-REC.05 STUDENT-ID PIC 9(4).05 STUDENT-NAME PIC X(25).05 STUDENT-ADDRESS X(50).EXEC SQL END DECLARE SECTIONEND-EXEC.
SQLCASQLCA是一个SQL通信区域, DB2在其中将SQL执行反馈传递到程序中。 SQLCA是一组变量, 将在每个SQL语句执行结束时进行更新。具有可执行SQL语句的程序可以提供一个, 但不超过一个SQLCA。
它只是告诉程序执行是否成功。 SQLCA下有几个预定义的变量, 例如SQLCODE, 其中包含错误代码。 SQLCODE中的值” 000″ 指定成功执行。
语法如下:
以下是在” 工作存储” 部分中声明SQLCA的语法:
DATA DIVISION.WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC.
游标DB2支持一种称为游标的机制。游标用于处理表中的一组行。它一次处理多个行选择。游标是保存查询所有结果的数据结构。
我们可以在工作存储区或过程分区中定义光标。以下是与游标相关的操作:
- 删除
- 打开
- 关
- 取
游标声明可以在” 工作存储” 部分或过程分区中进行。第一条语句是DECLARE语句, 这是一个不可执行的语句。
语法如下:
EXEC SQLDECLARE STUDCUR CURSOR FORSELECT STUDENT-ID, STUDENT-NAME, STUDENT-ADDRESS FROM STUDENTWHERE STUDENT-ID >
:WS-STUDENT-IDEND-EXEC.
打开
在使用游标之前, 应执行Open语句。 Open语句准备执行SELECT。
语法如下:
EXEC SQLOPEN STUDCUREND-EXEC.
关
【COBOL-数据库接口】close语句用于释放游标占用的所有内存。在结束程序之前, 应关闭游标。
语法如下:
EXEC SQLCLOSE STUDCUREND-EXEC.
取
Fetch语句用于标识游标, 并将值放在INTO子句中。当我们一次获取一行时, Fetch语句将在循环中进行编码。
语法如下:
EXEC SQLFETCH STUDCURINTO :WS-STUDENT-ID, :WS-STUDENT-NAME, WS-STUDENT-ADDRESSEND-EXEC.
推荐阅读
- COBOL-条件语句用法图解
- 全民k歌下载|全民k歌app下载
- spring 5.1.2 mvc HanderMapping源码
- 运行流畅快速不卡顿的第三方Android模拟器的安装及配置——夜神模拟器
- spring mvc HanderMapping源码
- Android SDK下载与安装
- 基于android的天气预报的设计与实现
- 查看apk安装包的AndroidManifest.xml文件
- HibernateUnable to locate appropriate constructor on class原因分析