开发工具:Web Sphere Development
1、DB2 支持多种语言编程。如COBOL、C、C++等,这些语言称为宿主语言,SQL语句要以嵌入的方式与宿主语言结合在一起,宿主语言通过宿主变量来操作数据库。这样SQL语句以EXEC SQL开始。
2、使用嵌入式SQL的程序首先要通过DB2的预编译器进行预编译,把嵌入的SQL语句翻译成宿主语言的代码和函数,然后经过宿主语言编译器的编译把DB2的库函数LINK进来,就能生成最后的可执行程序。
3、应用程序为了和SQL语句进行数据的交换,要使用宿主变量。宿主变量要在程序里声明。宿主变量使用在SQL语句中时前要加“:”作为识别标志。如果要从SQL语句中返回单行数据,使用INTO子句。
4、COBOL连接DB2数据库
(1)、从数据库的表中SELECT一条语句,并显示在控制台上。
A、COBOL代码:
IDENTIFICATION DIVISION.
PROGRAM-ID. DB2PRRACTICE.
ENVIRONMENT DIVISION.
DATA DIVISION.
FILE SECTION.
PROCEDURE DIVISION.
EXEC SQL CONNECT TO ETPCS END-EXEC. //打开数据库的连接
PERFORM SELECT-TABLE. //执行SQL语句
DISPLAY 'SQLCODE=' SQLCODE.
DISPLAY 'STUNO:' AA. // AA 、BB 、CC是宿主变量
DISPLAY 'STUNAME:' BB.
DISPLAY 'STUSEX:' CC.
STOP 'PRESS...'.
EXEC SQL DISCONNECT ETPCS END-EXEC. //关闭数据库的连接
GOBACK.
SELECT-TABLE.
EXEC SQL // COBOL程序中嵌入了SQL 语句,是用这种格式的。
SELECT STUNO,STUNAME,STUSEX //查询表,把SELECT出来的内容放到宿主变量AA 、BB 、CC中,但要注意宿主变量的引用方式。
INTO :EMPLOYEE.AA , :EMPLOYEE.BB , :EMPLOYEE.CC
FROM ETPUSER.ETPTEST
WHERE STUNO='00001'
这部分代码来定义表
END-EXEC.
B 、CPY文件
EXEC SQL DECLARE ETPCS.ETPTEST TABLE
(
STUNO CHARACTER(10) NOT NULL ,
STUNAME CHARACTER(10) NOT NULL,
STUSEX CHARACTER(10) NOT NULL
) END-EXEC.
这部分代码来定义宿主变量
01 EMPLOYEE.
10 AA PIC X(10).
10 BB PIC X(10).
10 CC PIC X(10).
注意:用INTO子句每次只能从返回单行语句,要返回多行数据,需要使用游标(CURSOR)来一次一行的处理多行数据,可以认为在DB2中线建立了一张结果表,用来存放付符合条件的记录,DB2使用一个游标在结果集中依次把记录传递给程序,记录全部取走后,程序将达到SQLCODE=100。每个CURSOR都有自己的名字,程序中可以同时存在多个CURSOR,使用不同的名字分别引用。
5、使用CURSOR来读取多行数据
①DECLARE CURSOR:定义CURSOR所查找数据的SQL语句
②OPEN CURSOR :