《数据库编程简介》PPT课件.ppt_第1页
《数据库编程简介》PPT课件.ppt_第2页
《数据库编程简介》PPT课件.ppt_第3页
《数据库编程简介》PPT课件.ppt_第4页
《数据库编程简介》PPT课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 数据库编程简介,2020年8月1日星期六,第2页,本章知识点,存储过程 SQL SERVER 2000编程 ODBC编程 嵌入式SQL,第3页,8.1 存储过程,存储过程只是一个SQL语句组合,它们被编译在一起,能通过单个命令而被执行。存储过程能用于向用户返回数据、在表中插入新数据、修改数据、执行系统函数和管理任务。总之,它们是SQL Server中功能非常强大的一部分,它能使你的工作更轻松。 存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功

2、能。,第4页,一、存储过程的用途,存储过程的用途几乎是无限的。从返回SELECT语句的结果并用于用户报表到执行复杂的数据有效性校验,你可以用存储过程来做任何事。,第5页,【续】,模块化的程序设计在你创建了一个存储过程之后,它就会存储在数据库中并能通过你的应用程序多次调用它。这些过程能封装数据库功能,也能被应用程序代码独立地修改,只要应用程序总是知道被返回的数据将要做什么。 安全性存储过程能作为一种安全性机制使用。当你授权许可一个用户或一组用户使用存储过程,他们将能够执行这个存储过程而不必有访问在存储过程中被访问的下层对象的许可。例如,如果你创建了一个存储过程,用于返回pubs数据库中autho

3、rs表的所有行,然后许可一个名叫乔的人去执行那个存储过程,他就能从authors表中检索出所有行,而不必直接地授予他对authors表的访问许可。,第6页,二、创建存储过程,在能够在你的用户应用程序上实际使用一个存储过程之前,你必须创建一个存储过程。这个创建过程事实上是相当简单的。需要做的第一件事是写一个你将要在存储过程内部运行的查询。例如,如果你打算创建一个存储过程用于向用户返回复合SELECT语句的结果,首先要做的是编写和测试SELECT语句。在已经创建并测试了SELECT语句后,就能够用CREATE PROCEDURE 语句实际创建这个存储过程。,第7页,例1:一个简单的存储过程及运行结

4、果,创建一个名为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 asc,第8页,使用此存储过程: 运行结果:,usp_get_author_phone1

5、 dull,第9页,例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_name order by NAME as

6、c,第10页,使用此存储过程: 运行结果:,usp_get_author_phone2 d,第11页,三、修改存储过程,ALTER PROCEDURE 更改先前通过执行 CREATE PROCEDURE 语句创建的过程,但不会更改权限,也不影响相关的存储过程或触发器。 sp_helptext 显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本 ; ALTER PROCEDURE,第12页,例3:创建存储过程并修改,1.创建一个向authors表里插入数据的存储过程。在这个存储过程中,我们要求用户提供作者的标识、名和姓。如果用户传递了另外的信息,会被插入到表中。如果用户没有传递

7、任何其他信息,我们将通过在存储过程的参数中设置缺省值来处理。,第13页,3.修改我们前面创建的usp_insert_new_author存储过程,将CA作为缺省值插入到state列中。,2.利用sp_helptext,查看存储过程usp_insert_new_author 的内容。,第14页,四、运行存储过程,可以通过在查询分析器的查询窗口键入存储过程名来执行。如果仅仅运行存储过程的话,这种方法是可取的。 但是如果在批中用这种方法执行多个存储过程,就会出现问题,那么我们就必须使用EXECUTE语句。EXECUTE语句的语法如下:EXECUTE 这里是你所要执行的存储过程的名称。,第15页,五、

8、删除存储过程,DROP PROCEDURE ,第16页,8.2 SQL SERVER编程,本节的要点包括: 注释 变量 流控制,第17页,一、注释,注释代码是一件非常重要的事情,这样可以保证你和别人在阅读这些代码时弄清它的意思。你应该在代码中放进注释,说明它用来做什么、使用什么参数、输出了什么。你还应该在代码发生变化时加以注释并说明原因。 /*.*/ 这种注释符可用来注释一整块的程序,包括多个行。 - 这种注释符是用来注释单个行的,这可以用在每行的开头和结尾。当要在多行中使用时,你必须在每行的开头都放上- -注释符。,第18页,二、变量,创建变量 例:声明一个不超过6 4个字符的字符型变量au

9、thor_name。,第19页,变量赋值SQL Server在变量创建时赋给变量NULL值。给一个变量赋值有两种方法,首选方法是用SET语句,另一种是用SELECT语句。,或,第20页,三、流控制,BEGIN.ENDBEGIN . . . END关键词对用来将一个SQL语句块组织在一起,以达一起执行的目的。 IF.ELSE,第21页,判定有多少作者住在加州,或者是否有作者住在加州?,第22页,WHILEWHILE语句用于创建一个循环, SQL Server将在该循环中连续执行一个功能,直到循环条件为假。,第23页,第24页,几个存储过程的例子,第25页,几个存储过程的例子,第26页,几个存储过

10、程的例子,第27页,几个存储过程的例子,第28页,函数,标量函数 (1)创建标量函数的主要语法格式: create function 所有者.自定义函数名(参数 数据类型,n) returns 返回参数的类型 as begin 函数体 return 函数返回的值 end (2)调用标量函数的语法: Print dbo.函数名(实参)或 select dbo.函数名(实参) (3)修改标量函数 直接将create语句改为alter (4)删除标量函数的语法: Drop function 函数名,第29页,create function fun(a int ,b int) returns int

11、as begin declare c int if ab set c=a else set c=b return c end print dbo.fun(30,5),第30页,函数,内联表值函数 (1)创建内联表值函数的语法: create function 所有者.自定义函数名(参数,n) returns table as return (select查询语句) (2)内联表值函数的调用: Select * from dbo.函数名(参数) 在调用函数的时候必须指明函数的拥有者和函数的名称。 (3)修改内联表值函数的语句与创建语句区别:create-alter,第31页,create fun

12、ction tsalary(sal int) returns table as return( select * from teachers where salary=sal ) select * from tsalary(1000) order by tid,第32页,例11 利用存储过程来实现下面的应用: 从一个账户转指定数额的款项到另一个账户中。,CREATE PROCEDURE TRANSFER (inAccount INT, outAccount INT, amount FLOAT) AS DECLARE totalDeposit FLOAT; BEGIN /* 检查转出账户的余额

13、*/ SELECT total INTO totalDeposit FROM ACCOUNT WHERE ACCOUNTNUM=outAccount; IF totalDeposit IS NULL THEN /* 账户不存在或账户中没有存款 */ ROLLBACK; RETURN; END IF;,第33页,IF totalDeposit amount THEN /* 账户账户存款不足 */ ROLLBACK; RETURN; END IF; UPDATE account SET total=total-amount WHERE ACCOUNTNUM=outAccount; /* 修改转出账

14、户,减去转出额 */ UPDATE account SET total=total + amount WHERE ACCOUNTNUM=inAccount; /* 修改转入账户,增加转出额 */ COMMIT; /* 提交转账事务 */ END;,第34页,8.3 ODBC编程,开放式数据库连接 (ODBC) (Open Database Connectivity (ODBC) 一种数据访问应用程序接口 (API),支持对可使用 ODBC 驱动程序的任何数据源的访问。ODBC 与美国国家标准学会 (ANSI) 和国际标准化组织 (ISO) 的用于数据库调用级接口 (CLI) 的标准一致。 ODBC优点: 移植性好 能同时访问不同的数据库 共享多个数据资源,第35页,8.3.1 数据库互连概述,ODBC产生的原因: 由于不同的数据库管理系统的存在,在某个RDBMS下编写的应用程序就不能在另一个RDBMS下运行 许多应用

温馨提示

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

评论

0/150

提交评论