《第八章 数据库编程简介.ppt》由会员分享,可在线阅读,更多相关《第八章 数据库编程简介.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章 数据库编程简介1/14/2023 本章知识点1.1.存储过程存储过程2.2.SQL SERVER 2000SQL SERVER 2000编程编程3.3.ODBCODBC编程编程4.4.嵌入式嵌入式SQLSQL28.1 8.1 存储过程存储过程存储过程只是一个SQL语句组合,它们被编译在一起,能通过单个命令而被执行。存储过程能用于向用户返回数据、在表中插入新数据、修改数据、执行系统函数和管理任务。总之,它们是SQL Server中功能非常强大的一部分,它能使你的工作更轻松。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由
2、应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。3一、存储过程的用途存储过程的用途几乎是无限的。从返回SELECT语句的结果并用于用户报表到执行复杂的数据有效性校验,你可以用存储过程来做任何事。4【续】1.1.模块化的程序设计模块化的程序设计在你创建了一个存储过程之后,它就会存储在数据库中并能通过你的应用程序多次调用它。这些过程能封装数据库功能,也能被应用程序代码独立地修改,只要应用程序总是知道被返回的数据将要做什么。2.2.安全性安全性存储过程能作为一种安全性机制使用。当你授权许可一个用户或一组用户使用存储过程,他们将能够执行这个存储过程而不必有访问在存储过
3、程中被访问的下层对象的许可。例如,如果你创建了一个存储过程,用于返回pubs数据库中authors表的所有行,然后许可一个名叫乔的人去执行那个存储过程,他就能从authors表中检索出所有行,而不必直接地授予他对authors表的访问许可。5二、创建存储过程在能够在你的用户应用程序上实际使用一个存储过程之前,你必须创建一个存储过程。这个创建过程事实上是相当简单的。需要做的第一件事是写一个你将要在存储过程内部运行的查询。例如,如果你打算创建一个存储过程用于向用户返回复合SELECT语句的结果,首先要做的是编写和测试SELECT语句。在已经创建并测试了SELECT语句后,就能够用CREATE PR
4、OCEDURE 语句实际创建这个存储过程。6例1:一个简单的存储过程及运行结果创建一个名为usp_get_phone1 的用户存储过程,使用一个名为last_name能够传送进存储过程的参数。我们就可以通过这个参数在authors表中找到他的电话号码。create procedure usp_get_author_phone1 last_name varchar(32)as select au_lname+,+au_fname as NAME,phone as PHONE from authors where au_lname=last_name order by NAME asc7使用此存储
5、过程:运行结果:usp_get_author_phone1 dull8例2:第二个存储过程创建一个名为usp_get_phone2 的用户存储过程,使用一个名为last_name能够传送进存储过程的参数。允许我们以姓的第一个字母查询作者姓名。create procedure usp_get_author_phone2 last_name varchar(32)as select last_name=last_name+%select au_lname+,+au_fname as NAME,phone as PHONE from authors where au_lname like last_
6、name order by NAME asc9使用此存储过程:运行结果:usp_get_author_phone2 d10三、修改存储过程ALTER PROCEDURE 更改先前通过执行 CREATE PROCEDURE 语句创建的过程,但不会更改权限,也不影响相关的存储过程或触发器。1.sp_helptext 显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本;2.ALTER PROCEDURE11例3:创建存储过程并修改1.创建一个向创建一个向authors表里插入数据的存储过程。在这个存储过程中,我们要表里插入数据的存储过程。在这个存储过程中,我们要求用户提供作者的标识
7、、名和姓。如果用户传递了另外的信息,会被插入到表求用户提供作者的标识、名和姓。如果用户传递了另外的信息,会被插入到表中。如果用户没有传递任何其他信息,我们将通过在存储过程的参数中设置缺中。如果用户没有传递任何其他信息,我们将通过在存储过程的参数中设置缺省值来处理。省值来处理。123.修改我们前面创建的修改我们前面创建的usp_insert_new_author存储过程,存储过程,将将CA作为缺省值插入到作为缺省值插入到state列中列中。2.利用利用sp_helptext,查看存储过程,查看存储过程usp_insert_new_author 的的内容。内容。13四、运行存储过程1.可以通过在查
8、询分析器的查询窗口键入存储过程名来执行。如果仅仅运行存储过程的话,这种方法是可取的。2.但是如果在批中用这种方法执行多个存储过程,就会出现问题,那么我们就必须使用EXECUTE语句。EXECUTE语句的语法如下:EXECUTE 这里是你所要执行的存储过程的名称。14五、删除存储过程1.DROP PROCEDURE 158.2 SQL SERVER编程本节的要点包括:注释 变量 流控制16一、注释注释代码是一件非常重要的事情,这样可以保证你和别人在阅读这些代码时弄清它的意思。你应该在代码中放进注释,说明它用来做什么、使用什么参数、输出了什么。你还应该在代码发生变化时加以注释并说明原因。1./*.
9、*/这种注释符可用来注释一整块的程序,包括多个行。2.这种注释符是用来注释单个行的,这可以用在每行的开头和结尾。当要在多行中使用时,你必须在每行的开头都放上 注释符。17二、变量1.创建变量例:声明一个不超过6 4个字符的字符型变量author_name。182.变量赋值SQL Server在变量创建时赋给变量NULL值。给一个变量赋值有两种方法,首选方法是用SET语句,另一种是用SELECT语句。或或19三、流控制1.BEGIN.ENDBEGIN.END关键词对用来将一个SQL语句块组织在一起,以达一起执行的目的。2.IF.ELSE20判定有多少作者住在加州,或者是否有作者住在加州?判定有多
10、少作者住在加州,或者是否有作者住在加州?213.WHILEWHILE语句用于创建一个循环,SQL Server将在该循环中连续执行一个功能,直到循环条件为假。2223几个存储过程的例子24几个存储过程的例子25几个存储过程的例子26几个存储过程的例子27函数标量函数 (1)创建标量函数的主要语法格式:create function 所有者.自定义函数名(参数 数据类型,n)returns 返回参数的类型 as begin 函数体 return 函数返回的值 end(2)调用标量函数的语法:Print dbo.函数名(实参)或 select dbo.函数名(实参)(3)修改标量函数 直接将cre
11、ate语句改为alter(4)删除标量函数的语法:Drop function 函数名28create function fun(a int,b int)returns int asbegin declare c int if ab set c=a else set c=b return cendprint dbo.fun(30,5)29函数内联表值函数(1)创建内联表值函数的语法:create function 所有者.自定义函数名(参数,n)returns table as return(select查询语句)(2)内联表值函数的调用:Select*from dbo.函数名(参数)在调用函数
12、的时候必须指明函数的拥有者和函数的名称。(3)修改内联表值函数的语句与创建语句区别:createalter30create function tsalary(sal int)returns tableas return(select*from teachers where salary=sal )select*from tsalary(1000)order by tid31例例1111 利用存储过程来实现下面的应用利用存储过程来实现下面的应用:从一个账户转从一个账户转指定数额的款项到另一个账户中。指定数额的款项到另一个账户中。CREATE PROCEDURE TRANSFER(inAccoun
13、t INT,outAccount INT,amount FLOAT)AS DECLARE totalDeposit FLOAT;BEGIN /*检查转出账户的余额*/SELECT total INTO totalDeposit FROM ACCOUNT WHERE ACCOUNTNUM=outAccount;IF totalDeposit IS NULL THEN /*账户不存在或账户中没有存款*/ROLLBACK;RETURN;END IF;32 IF totalDeposit amount THEN /*账户账户存款不足*/ROLLBACK;RETURN;END IF;UPDATE acc
14、ount SET total=totalamount WHERE ACCOUNTNUM=outAccount;/*修改转出账户,减去转出额*/UPDATE account SET total=total+amount WHERE ACCOUNTNUM=inAccount;/*修改转入账户,增加转出额*/COMMIT;/*提交转账事务*/END;338.3 ODBC编程1.开放式数据库连接(ODBC)(Open Database Connectivity(ODBC)一种数据访问应用程序接口(API),支持对可使用 ODBC 驱动程序的任何数据源的访问。ODBC 与美国国家标准学会(ANSI)和国
15、际标准化组织(ISO)的用于数据库调用级接口(CLI)的标准一致。2.ODBC优点:1.移植性好能同时访问不同的数据库共享多个数据资源348.3.1 数据库互连概述1.ODBC产生的原因:由于不同的数据库管理系统的存在,在某个RDBMS下编写的应用程序就不能在另一个RDBMS下运行 许多应用程序需要共享多个部门的数据资源,访问不同的RDBMS 2.ODBC:是微软公司开放服务体系(Windows Open Services Architecture,WOSA)中有关数据库的一个组成部分 提供了一组访问数据库的标准API 3.ODBC约束力:规范应用开发规范RDBMS应用接口358.3.2 ODBC工作原理概述 ODBC应用系统的体系结构:一、用户应用程序 二、驱动程序管理器 三、数据库驱动程序四、ODBC数据源管理 36