- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章SQL系统环境本章要点1.学会用嵌入式SQL对数据库进行增、删.doc
第8章 SQL系统环境
本章要点
1.学会用嵌入式SQL对数据库进行增、删、改、查操作。
2.游标是本章新引入的概念,应学会利用游标的查询。
3.在理解事务的概念之后,学会用嵌入式SQL处理简单事务。
4. 侧重从用户对数据库的访问权限的角度进行讨论。初步学会建立、授予和取消权限。
嵌入式SQL
当一个程序既要访问数据库,又要处理数据时,把SQL语言嵌入程序设计语言即宿主语言中,将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合,是目前解决该问题的最有效途径。这样使用的SQL称为嵌入式SQL。
如何实现嵌入式SQL
对于不同的DBMS和宿主语言,实现嵌入式SQL的方法基本相同,只是在一些特殊的地方略有差异。实现嵌入式SQL语言主要是实现说明部分的嵌入和执行部分的嵌入。
以SQL嵌入C语言为例说明实现嵌入式SQL的方法
1、说明部分
C语言和SQL语言之间是通过共享变量来进行数据的传送。
共享变量是由宿主语言程序定义、用SQL的DECLARE语句说明,以后可在SQL语句中引用的宿主语言变量。
共享变量需用以“EXEC SQL”为前缀的说明语句说明,在说明语句的结尾加“;”
在SQL语句中引用共享变量时,为了与数据库本身的变量(例如属性)相区别,使用时在每个共享变量前加冒号“:”。
在宿主语言中(C语言),共享变量可与其它变量一起使用,不需要加冒号:
在共享变量中,有一个系统定义的特殊变量,称为SQLSTATE。在每执行一个SQL语句时,都要返回一个SQLSTATE代码,来表示这个SQL语句是否执行成功等情况。
当SQLSTATE为全零时,表示SQL语句执行成功;
当SQLSTATE为“02000”时,表示SQL语句已执行,但未找到元组。
所有SQL语句中用到的共享变量,除系统定义的(例如SQLSTATE)以外,都必须在宿主程序中进行说明。说明语句的开头行为:
EXEC SQL BEGIN DECLARE SECTION;
说明语句的结束行为:
EXEC SQL END DECLARE SECTION;
在一个说明语句中定义几个共享变量,它们都是按照C语言的数据类型和格式进行定义的。
EXEC SQL BEGIN DECLARE SECTION;
char sno[6],sname[20];
int sage;
char SQLSTATE[6];
EXEC SQL END DECLARE SECTION;
2、执行部分
插入语句:
插入语句的格式为:
EXEC SQL INSERT
INTO Student (StudentNo, StudentName)
VALUES (:sno, :sname);
修改语句:
修改语句的格式为:
EXEC SQL UPDATE Student
SET (StudentName=:sname, StudentAge=:sage) WHERE StudentNo=:sno;
删除语句:
删除语句的格式为:
EXEC SQL DELETE
FROM StudentCourse
WHERE StudentNo=
( SELECT StudentNo FROM Student
WHERE StudentName=:sname );
查询语句:
当查询的结果只有一个元组时,
EXEC SQL
SELECT StudentName, StudentDept INTO :sname,:sdept
FROM Student
WHERE StudentNo=:sno;
当查询的结果有多个元组时,需采用涉及到游标的查询方法。
使用游标的SQL编程
利用游标进行查询需要四种语句:说明游标语句、打开游标语句、推进语句和关闭游标语句。
说明游标语句
说明游标(cursor)语句定义一个游标,并将其与相应的查询语句相联系;
EXEC SQL DECLARE 游标名 CURSOR FOR
SELECT …FROM…WHERE…;
打开游标语句
和读取文件之前需要打开文件一样,在取数据库数据给共享变量之前需要先使用打开游标语句。在打开游标时,执行与游标相联系的SQL查询语句。此时游标处于打开状态,游标指向第一个元组之前。
EXEC SQL OPEN 游标名;
推进语句
在每次执行推进语句时,首先,把游标向前推进一个位置,然后按照游标的当前位置取一个元组,对共享变量赋值。
EXEC SQL FETCH 游标名 INTO 变量表
关闭游标语句
在取完数或取数发生错误等原因而不再使用游标时,应关闭游标以释放相应的资源。
EXEC SQL CLOSE 游标名;
实例:分析学生
文档评论(0)