- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[IT认证]嵌入式SQL
嵌入式SQL的概述 嵌入式SQL语句与主语言之间的通信 游标 动态SQL简介 常用动态SQL语句:EXECUTE IMMEDIATE、PREPARE、EXECUTE、DESCRIBE 使用动态SQL技术更多的是涉及程序设计方面的知识,而不是SQL语言本身。这里就不详细介绍了,感兴趣的读者可以参阅有关书籍。 4.7.4动态SQL简介 前面介绍的嵌入式SQL语句可以在程序运行过程中根据实际需要输入WHERE子句或HAVING子句中某些变量的值。语句中主变量的个数与数据类型在预编译时都是确定的,只有是主变量的值是程序运行过程中动态输入的。这类嵌入式SQL语句为静态SQL语句。 但这类静态SQL语句提供的编程灵活性在许多情况下仍显得不足,不能编写更为通用的程序。例如查询条件是不确定的,要查询的属性列也是不确定的,这时就无法用一条静态SQL语句实现了。 动态SQL方法允许在程序运行过程中临时“组装”SQL语句。应用范围包括在预编译时下列信息不能确定时:SQL语句正文、主变量个数、主变量的数据类型、SQL语句中引用的数据库对象(列、索引、基本表、视图等)。 (1)语句可变,临时构造完整的SQL语句 (2)条件可变,WHERE子句中的条件及HAVING短语中的条件 (3)数据库对象、查询条件均可变,SELECT子句中的列名、FROM子句中的表名或视图名、WHERE子句中的条件、HAVING短语中的条件 * * 4.7.1嵌入式SQL的概述 SQL语言提供了两种不同的使用方式:交互式、嵌入式。 这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充。对ESQL,RDBMD一般采用预编译方法处理即由RDBMS的预处理程序对源程序进行扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。 为了区分SQL语句与主语言语句,需要在所有SQL语句前加前缀EXEC SQL,其结束标志随主语言的不同而不同。 以C为主语言的嵌入式SQL语句的一般形式 EXEC SQL SQL语句; 例:EXEC SQL DROP TABLE PRODUCT; 以COBOL作为主语言的嵌入式SQL语句的一般形式 EXEC SQL SQL语句 END-EXEC 例: EXEC SQL DROP TABLE PRODUCT END-EXEC 注意:根据嵌入式SQL语句作用不同,分为可执行语句和说明性语句。允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句,允许出现说明语句的地方,都可以写说明性SQL语句。 4.7.2嵌入式SQL语句与主语言之间的通信 将SQL嵌入到高级语言中混合编程 SQL语言中描述性的面向集合的语句负责操纵数据库 高级语言中过程性的面向记录的语句负责控制程序流程。 这时程序中会含有两种不同计算模型的语句,它们之间应该如何通信呢? 数据库工作单元和源程序工作单元之间的通信主要包括: ⑴向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程,主要用SQL通信区(SQL COMMUNICATION AREA,简称SQLCA)实现。 ⑵主语言向SQL语句提供参数,主要由主变量(HOST VARIABLE)实现。 ⑶将SQL语句查询数据库的结果交主语言进一步处理,主要由主变量和游标(CURSOR)实现。 1.SQL通信区 SQL语句执行后,DBMS反馈给应用程序若干信息主要包括描述系统当前工作状态和描述运行环境。 这些信息将送到SQL通信区SQLCA中,应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句。 SQLCA的内容与所执行的SQL语句有关,与该SQL语句的执行情况有关 如在执行删除语句DELETE后,不同的执行情况,SQLCA中有不同的信息: 违反数据保护规则,操作拒绝; 没有满足条件的行,一行也没有删除; 成功删除,并有删除的行数; 无条件删除警告信息; 由于各种原因,执行出错等。 SQLCA是一个数据结构,其使用方法: 首先定义SQLCA,即用EXEC SQL INCLUDE SQLCA加以定义; SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE; 如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则表示出错; 应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理。 2.主变量 在SQL语句中使用的主语言程序变量简称为主变量(HOST VARIABLE),嵌入式SQL语句中可以用主变量来输入或输出数据。 根据其作用不同主变量分为两种类型: 输入主变量,由应用程
文档评论(0)