ESQL 资料(完全版)
    esql资料(完全版)
    esql/c资料(完全版)
    第六章嵌入式sql(e-sql)概述3第一节什么就是内嵌sql语言?31.1内嵌sql程序的共同组成元素31.2什么就是静态sql和动态sql?41.3什么就是sqlca?41.4什么就是sqlda?5
    第二节sybasesqlserver嵌入式sql语言52.1一个嵌入sql语言的简单例子52.2嵌入sql的处理过程62.3嵌入sql语句总览72.3.1宿主变量72.3.2连接数据库122.3.3数据的查询和修改132.3.4游标的使用132.3.5sqlca152.3.6whenever162.3.7批处理182.3.8事务182.4动态sql语句182.4.1动态修改192.4.2动态游标202.4.3sqlda23
    第三节ibmdb2内嵌sql语言353.1一个直观示例353.2内嵌sql语句373.2.1宿主变量373.2.2单行查阅393.2.3多行查阅39
    3.2.4插入、删除和修改操作403.2.5sqlca433.2.6事务45
    3.3db2的内嵌sql程序处理过程463.4db2的动态sql内嵌语句533.4.1基本方法533.4.2动态游标553.4.3sqlda55
    第四节oracle数据库的嵌入sql语言66
    4.1基本的sql语句664.1.1宿主变量和命令符令664.1.2查阅684.1.3修正数据684.1.4游标684.2内嵌pl/sql714.3动态sql语句72
    4.3.1oracle动态sql语句的一些特点724.3.2使用动态sql的四种方法724.3.3sqlda75
    第五节informix的内嵌sql/c语言895.1一个直观的入门例子895.2宿主变量91
    5.3嵌入sql的处理过程965.4动态sql语言965.4.1sqlda97
    第六节microsoftsqlserver7嵌入式sql语言1056.1一个内嵌sql语言的直观例子1056.2内嵌sql的处理过程1066.3内嵌sql语句112
    6.3.1声明嵌入sql语句中使用的c变量1126.3.2连接数据库1156.3.3数据的查询和修改1156.3.4游标的使用1166.3.5sqlca1176.3.6whenever1186.4动态sql语句1196.4.1动态修改11
96.4.2动态游标1206.4.3sqlda122
    6.4.4describe语句1306.5api130
    第六章嵌入式sql(e-sql)简介第一节什么是嵌入sql语言?
    sql就是一种双重式语言,它既是一种用作查阅和更新的交互式数据库语言,又就是一种应用程序展开数据库出访时所实行的编程式数据库语言。sql语言在这两种方式中的大部分语法就是相同的。在撰写出访数据库的程序时,必须从普通的编程语言已经开始(如c语言),再把sql重新加入至程序中。所以,嵌入式sql语言就是将sql语句轻易内嵌至程序的源代码中,与其他程序设计语言语句混合。专用的sql进度表编译程序将内嵌的sql语句切换为能够被程序设计语言(如c语言)的编译器辨识的函数调用。然后,c编译器编程源代码为可执行程序。
    各个数据库厂商都采用嵌入sql语言,并且都符合ansi/iso的标准。所以,如果采用合适的嵌入sql语言,那么可以使得你的程序能够在各个数据库平台上执行(即:源程序不用做修改,只需要用相应数据库产品的预编译器编译即可)。当然,每个数据库厂商又扩展了ansi/iso的标准,提供了一些附加的功
    能够。这样,也使每个数据库产品在内嵌sql方面存有一些区别。本章的目标就是,对所有的数据库产品的内嵌sql搞一个直观、新颖的了解。
    当然,嵌入sql语句完成的功能也可以通过应用程序接口(api)实现。通过api的调用,可以将sql语句传递到dbms,并用api调用返回查询结果。这个方法不需要专用的预编译程序。1.1嵌入sql程序的组成元素
    我们以ibm的db2内嵌sql为基准,去看一看内嵌sql语句的共同组成元素。
    例1、连接到sample数据库,查询lastname为johnson的firstname信息。#include#include#include#includeutil.h#include
    execsqlincludesqlca;(1)main(){
    execsqlbegindeclaresection;(2)charfirstname[13];charuserid[9];charpasswd[19];
    execsqlenddeclaresection;execsqlconnecttosample;(3)
    execsqlselectfirstnmeinto:firstname(4)fromemployee
    wherelastname=johnson;(4)printf(firstname=%s\\n,firstname);execsqlconnectreset;(5)return0;}
    上面是一个简单的静态嵌入sql语句的应用程序。它包括了嵌入sql的主要部分:
    (1)中的includesqlca语句定义并叙述了sqlca的结构。sqlca用作应用程序和数据库之间的通讯,其中的sqlcode回到sql语句继续执行后的结果状态。
    (2)在begindeclaresection和enddeclaresection之间定义了宿主变量。宿主变量可被sql语句引用,也可以被c语言语句引用。它用于将程序中的数据通过sql语句传给数据库管理器,或从数据库管理器接收查询的结果。在sql语句中,主变量前均有d:‖标志以示区别。
    (3)在每次出访数据库之前必须搞connect操作方式,以相连接至某一个数据库上。这时,必须确保数据库实例已经启动。
    (4)是一条选择语句。它将表employee中的lastname为djohnson‖的行数据的firstname查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。(5)最后断开数据库的连接。
    从上基准窥见,每条嵌入式sql语句都用execsql已经开始,说明它就是一条sql语句。这也就是说进度表编译器在execsql和d;‖之间就是内嵌sql语句。如果一条嵌入式sql语句挤占多行,在c程序中可以用续行符d\\‖。
    1.2什么是静态sql和动态sql?
    内嵌sql语言,分成静态sql语言和动态语言两类。静态sql语言,就是在编程时已经确认了提及的表和列于。宿主变量不发生改变表和列于信息。可以采用主变量发生改变查阅参数值,但是无法用主变量替代表名或榜上有名。动态sql语言就是:无此编程时确认sql的表和列于,而是使程序在运转时提供更多,并将sql语句文本托付给dbms继续执行。静态sql语句在编程时已经分解成继续执行计划。而动态sql语句,只有在继续执行时才产生继续执行计划。动态sql语句首先继续执行prepare语句建议dbms分析、证实和优化语句,并为其分解成继续执行计划。dbms还设置sqlcode以说明语句中辨认出的错误。当程序执行回去dprepare‖语句后,就可以用execute语句继续执行继续执行计划,并设置sqlcode,以说明顺利完成状态。1.3什么就是sqlca?
    应用程序执行时,每执行一条sql语句,就返回一个状态符和一些附加信息。这些信息反映
了sql语句的执行情况,它有助于用户分析应用程序的错误所在。这些信息都存放在sqlca.h的sqlca结构中。如果一个源文件中包含sql语句,则必须要在源程序中定义一个sqlca结构,而且名为sqlca。最简单的定义方法是在源文件中加入一些语句:execsqlincludesqlca.h。每个数据库产品都提供了sqlca结构。
    1.4什么就是sqlda?
    我们知道,动态sql语句在编译时可能不知道有多少列信息。在嵌入sql语句中,这些不确定的数据是通过sqlda完成的。sqlda的结构非常灵活,在该结构的固定部分,指明了多少列等信息,在该结构的后面有一个可变长的结构,说明每列的信息。在从数据库获得数据时,就可以采用sqlda来获得每行的数据。各个数据库产品的sqlda结构都不完全相同。第二节sybasesqlserver嵌入式sql语言2.1一个嵌入sql语言的简单例子
    我们首先来看一个直观的嵌入式sql语言的程序(c语言):用sa(口令为password)相连接数据库服务器,并将所有书的价格减少10%。这个例子程序如下:基准1、
    /*建立通讯区域*/execsqlincludesqlca;main(){
    /*声明宿主变量*/
    execsqlbegindeclaresection;charuser[30],passwd[30];
    execsqlenddeclaresection;/*错误处理*/
    execsqlwheneversqlerrorcallerr_p();/*连接到sqlserver服务器*/printf(\\npleaseenteryouruserid);gets(user);printf(\\npassword);gets(passwd);
    execsqlconnect:useridentifiedby:passwd;execsqlusepubs2;
    return(0);}
    /*错误处理程序*/err_p(){
    printf(\\nerroroccurred:code%d.\\n%s,\\sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);}
    从上面这个例子,我们窥见内嵌sql的基本特点就是:
    1、每条嵌入式sql语句都用execsql开始,表明它是一条sql语句。这也是告诉预编译器在e
xecsql和d;‖之间是嵌入sql语句。
    2、如果一条嵌入式sql语句挤占多行,在c程序中可以用续行符d\\‖,在fortran中必须存有续行符。其他语言也存有适当规定。
    3、每一条嵌入sql语句都有结束符号,如:在c中是d;‖。4、嵌入sql语句的关键字不区分大小写。
    5、可以采用d/*….*/‖去嵌入注解。也可以采用d--‖去嵌入注解。2.2内嵌sql的处理过程db2数据库sql语句

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。