DB2 初学笔记

2019-04-15 16:32发布

开发工具:Web Sphere Development 1DB2 支持多种语言编程。如COBOLCC++等,这些语言称为宿主语言,SQL语句要以嵌入的方式与宿主语言结合在一起,宿主语言通过宿主变量来操作数据库。这样SQL语句以EXEC SQL开始。 2、使用嵌入式SQL的程序首先要通过DB2的预编译器进行预编译,把嵌入的SQL语句翻译成宿主语言的代码和函数,然后经过宿主语言编译器的编译把DB2的库函数LINK进来,就能生成最后的可执行程序。 3、应用程序为了和SQL语句进行数据的交换,要使用宿主变量。宿主变量要在程序里声明。宿主变量使用在SQL语句中时前要加“:”作为识别标志。如果要从SQL语句中返回单行数据,使用INTO子句。 4COBOL连接DB2数据库 1)、从数据库的表中SELECT一条语句,并显示在控制台上。 ACOBOL代码: 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 :