数据库原理(8).ppt_第1页
数据库原理(8).ppt_第2页
数据库原理(8).ppt_第3页
数据库原理(8).ppt_第4页
数据库原理(8).ppt_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章数据库编程,嵌入式SQL(ESQL)游标变量程序流控制存储过程ODBC编程,第一节嵌入式SQL,SQL语言:面向集合的非过程语言。然而,许多交易是程序性的,需要根据不同的条件执行不同的任务。因此,单独使用SQL语言很难实现它们。高级语言的过程结构可以用来弥补SQL语言在实现复杂应用方面的不足。高级语言:主语言/宿主语言;1.嵌入式SQL的处理过程;1.嵌入式SQL语句类型*可执行SQL语句-数据定义-数据操作-数据控制*描述性SQL语句;2.嵌入式SQL的形式;在ESQL,区别SQL语句和主要语言的方法是:执行SQL;3。ESQL基本处理程序,主语言程序(包括ESQL语句),RDBMS预

2、处理器,ESQL语句到调用函数的转换,主语言编译器,目标语言程序,2。SQL语句与主语言之间的通信,SQL通信区,(输入)主变量,(输出)主变量,游标,1。SQL通信区,功能方法和步骤:声明SQL通信区,执行SQL操作,判断状态变量。通信区标识:SQLCA状态变量:SQLCODE声明了SQL通信区:执行SQL INCLUDE SQLCA,SQL操作状态示例,在SQL执行DELETE操作后,SQLCA中的信息:成功删除,以及删除的行数。SQLCODE=SUCCESS无条件删除警告信息违反了数据完整性规则,拒绝删除不符合条件的行,并且不删除任何行。由于各种原因,发生了执行错误。2.主变量,主变量:

3、主语言程序变量,可分为:输入主变量:主语言赋值,SQL语句引用。-您可以指定更新数据库的值。-您可以指定运行数据库的条件。-您可以指定所执行操作的主要输出变量:SQL语句赋值和主要语言引用。您可以获得SQL语句的结果数据和状态,主变量可以是输入主变量,也可以是输出主变量。主变量可以附带一个可选的指示变量。主要变量和指标变量描述步骤和语句:/*主变量描述*/*表示变量描述*/执行SQL END DECLARE SECTION注意:当主变量与数据对象同名时,应该在主变量名称前添加一个冒号(:)。3。游标,SQL语言是面向集合的,主语言是面向记录的。一组主变量一次只能存储一条记录,因此引入了游标的概

4、念,用游标来协调两种处理方法。游标:系统为用户打开的数据缓冲区,用于存储SQL语句的执行结果,内部有指针指示数据记录。每个游标都有一个名称,用户可以一个接一个地获取记录,并通过游标给主变量赋值。使用游标步骤和相应的语句定义游标执行SQL声明游标为只读|更新;打开光标执行语句打开;推进光标指针,将当前记录数据放入主变量执行语句取入;关闭光标执行语句关闭;3。游标使用,不带游标的SQL语句:描述性语句数据定义语句数据控制语句查询结果是单记录SELECT语句(此时,在SELECT语句中使用了INTO子句,查询结果放在主变量中。非当前形式的UPDATE语句非当前形式的INSERT语句,必须使用游标形式

5、的SQL语句:具有多条记录的SELECT语句,当前形式的UPDATE语句,当前形式的DELETE语句,以及当前形式的UPDATE语句和DELETE语句都是面向设置的操作。当您只想修改或删除某些记录,而不是所有符合条件的记录时,您需要使用带有游标的SELECT语句以及CURRENT形式的UPDATE和DELETE语句。CURRENT是当前记录。,CURRENT形式的操作步骤,用DECLARE语句来解释光标;使用选择语句找出所有符合条件的记录,并在选择语句中用于修改操作的更新;用OPEN语句打开游标,将满足条件的所有记录从表中取出到缓冲区;用FETCH语句推游标,从缓冲区中取出记录,并将其发送到主

6、变量;找出要修改或删除的记录,并在删除时使用UPDATE和delete命令中的where current子句;用CLOSE语句关闭光标。4.建立并关闭数据库连接。嵌入式SQL程序在访问数据库之前必须连接到数据库。关系数据库管理系统根据用户信息检查连接请求的合法性。只有通过身份验证,才能建立有效的合法连接。1。建立数据库连接,以用户身份执行SQL连接;描述:连接到数据库服务器。一个程序中可以同时建立多个连接,这些连接由连接名称标识。2。修改数据库连接,执行SQL设置连接|默认;3.关闭数据库连接执行SQL断开;5、ESQL举例,设置学生表。执行SQL创建表学生(斯诺查尔(9)不为空唯一,斯纳姆查

7、尔(8),性别查尔(1)检查(性别入(男,女),出生日期,Dno查尔(2),主键(斯诺),外键(Dno)参考系);删除学生表。执行SQL删除表学生;例如,ESQL,查询学生的姓名、性别和生日,学生编号为200425001。执行SQL SELECT Sname,性别,出生入:Msname,Msex,出生自学生,Sno=200425001如果学生人数在输入主变量“给定”中,它是:其中“给定”等于:例如,ESQL将C01课程所有学生的分数提高了5分。执行SQL更新等级集得分=得分5,其中Cno=C01例如,ESQL删除学生选课的所有记录,要删除的学生的名字已经分配给主变量studname。执行SQL

8、从没有学生的年级中删除(从学生中选择没有学生,学生名称=:学生名称);在第二部分中,SQL Server的游标被声明为打开游标,按下游标指针并获取当前记录,使用游标修改数据,关闭游标并释放游标,1。声明光标,声明光标本地|全局向前_仅|滚动静态|键集|动态|快进只读|滚动锁定|更新的最佳类型警告声明光标并定义光标的特征,如光标的滚动行为和用于生成光标操作的结果集的查询。2。打开游标,打开全局|打开事务处理-SQL服务器游标,然后通过执行在DECLARE CURSOR或SET cursor_variable语句中指定的事务处理-SQL语句来填充游标。全局:指定全局光标。游标名称:声明的游标的名称

9、。如果全局游标和本地游标都使用该游标名称作为它们的名称,那么如果指定了全局,则它意味着全局游标,否则它意味着本地游标。游标变量名:引用游标的游标变量的名称。3。向前移动光标,从全局中获取下一个|前一个|第一个|最后一个|绝对|相对|从光标中检索特定行。绝对:将光标移到标题开头的第n行,并将返回的行改为当前行。相对:当前行之后的第n行,并将返回的行改为当前行。允许提取操作的列数据被放入局部变量。列表中的每个变量从左到右与光标结果集中的相应列相关联。每个变量的数据类型必须与相应结果列的数据类型或结果列的数据类型支持的隐式转换相匹配。变量的数量必须与光标选择列表中的列数相匹配。FETCH语句状态信息

10、,在执行最后一次FETCH后,SQL Server使用FETCH_STATUS保存状态信息。0成功完成FETCH语句-1表示FETCH语句中有错误,或者当前光标指针已经在结果集的最后一行,并且结果集中没有更多数据。-2表示提取的行不存在,4。使用光标修改数据,在当前更新的地方删除,在当前更新的地方只删除或修改结果集中的某一行。5。关闭光标,关闭全局|通过释放当前结果集并释放光标所在行上的光标锁定来关闭打开的光标。,6。释放游标,解除分配全局|删除游标引用。当最后一个游标引用被释放时,构成游标的数据结构由SQL Server释放。例1,根据用户的要求,一些学生在一门课程中的分数会提高几分。# I

11、NCLUDE # INCLUDE EXEC SQL INCLUDE sqlca;主()执行语句开始声明部分;CHAR Msno(9),Mcno(3);国际海事委员会,海事委员会;执行SQL结束声明部分;get(Mcno);获取(MscoRein);执行SQL声明用于选择“否”的点光标,从分数=:分的等级中获取分数,用于更新分数;执行SQL OPEN Mpoint而(1)执行SQL FETCH Mpoint到:Msno,Mscore如果(sqlca.sqlcode SUCCESS)中断;printf(“% s,%d”,Sno,Score);“更新等级?”);Scanf (%c ,8。示例2为au

12、thors表中姓氏以字母b开头的行声明了一个简单的游标,并使用FETCH NEXT逐个提取这些行。使用pubs GO DECLARE authors_cursor FOR SELECT au _ lname FROM authors WHERE au _ lname LIKE B % ORDER BY au _ lname OPEN authors _ CURSOR FETCH NEXT FROM M M authors _ CURSOR which FETCH _ STATUS=0 BEGIN FETCH NEXT FROM authors _ CURSOR END CLOSE author

13、s _ CURSOR democrate authors _ CURSOR GO,示例3:使用FETCH将值存储到变量中,使用pubs GO DECLARE au _ lname varchar(40),au _ fname varchar (20)声明authors _ CURSOR游标Au _ fname FROM authors WHERE Au _ lname LIKE B % ORder BY Au _ lname,Au _ fname OPEN authors _ cursor FETCH NEXT FROM authors _ cursor INTO Au _ lname,Au

14、_ fname WHILE FETCH _ STATUS=0 BEgin PRINT author : Au _ fname Au _ lname FETCH NEXT FROM authors _ cursor INTO Au _ lname,Au _ fname end close authors _ cursor deploy go,第3节变量T-SQL,1。 变量分类在T-SQL中有两种类型的变量:局部变量(用户定义的变量):它们是用户定义的,在批处理中使用,在批处理执行后消失。从开始并初始化为Null。全局变量:它是由服务器声明和分配的变量。首先。全局变量示例,2。declare变量,DECLARE局部变量必须以符号开始,数据类型不能是文本、ntext或图像。声明变量后,所有变量都被初始化为Null,临时值可以由变量存储。例如,某些变量(如计算的中间结果)只能用于表达式,而不能用于对象名称或关键字。3.变量赋值,设置=表达式可以是任何有效的SQL Server表达式。将SET语句设置为空,将非空值赋给声明的局部变量。给变量赋值的SET语句返回一个值。初始化多个变量时,对每个局部变量使用单独的SET语句。变量赋值,选择=表达式可以是任何有效的SQL Server表达式,包括标量(单列)子查询。通常用于向变量返回单个值。如果表达式是列名,并且子查询返回多个值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论