存储过程创建与应用

2024-04-21

存储过程创建与应用(精选8篇)

篇1:存储过程创建与应用

-09-09ORACLE 常用函数总结(80个)

-11-11oracle 视图权限 oracle 创建视图权限不足

2012-11-11oracle 声明游标(不具备字段)规则应用

-03-03Oracle数据库索引的维护

-04-04oracle监控某表变动触发器例子(监控增,删,改)

-07-07[Oracle] 分析AWR报告的方法介绍

2014-06-06Oracle 11g自动诊断信息库(Automatic Diagnostic Repository,AD

2007-03-03Oracle 9i轻松取得建表和索引的DDL语句

2007-04-04Oracle轻松取得建表和索引的DDL语句

2012-11-11oracle使用order by排序null值如何处理

篇2:存储过程创建与应用

当前社会已经进入了大数据时代, 各行各业的信息量随着时间推移越来越多, 有些行业甚至每天的数据量都呈几何倍的增长。

数据库技术也随之快速发展, 信息管理系统与数据库的交互变得更加频繁, 如何从庞大的数据库中快速查询到想要的信息, 还要加快系统响应时间, 减少服务器端的负担, 存储过程就是解决这种问题的数据库关键性技术。

存储过程 (Stored Procedure) 是预编译SQ L语句的集合, 它代替传统的SQ L语句逐条执行的方式, 经编译和优化后存储在服务器的数据库中, 当用户需要的时候只要调用响应的存储过程即可。

2 存储过程的类型

存储过程大致分为三种:即系统存储过程、自定义存储过程和扩展存储过程。

1) 系统存储过程。以“sp”为前缀, 存放在m aster数据库中。通过系统存储过程, 完成数据库中许多管理性或者信息性的活动。

2) 自定义存储过程。是用户根据自己实际需求在数据库中创建的存储过程。

3) 扩展存储过程。以“xp_”为前缀, 可运用其他编程语言 (如:C、C++) 创建外部例程, 将这个例程在数据库中当做存储过程使用。

3 存储过程的作用

存储过程的作用大致可以归纳为一下几点:

1) 存储过程具有安全特性和所有权链接, 以及可以附加到他们的证书。用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限。

2) 存储过程允许模块化程序设计。存储过程一旦创建, 以后即可在程序中任意调用, 增强应用程序的可维护性。

3) 存储过程可以减少网络通信流量。一段成百上千行的SQ L语句的操作可以用一条执行过程代码语句执行, 从而免去在网络中发送数百行的代码。

4) 存储过程可以增强应用程序的安全性。参数化的存储过程可以有效防范SQ L注入攻击。

4 存储过程的应用

在实际应用中, 大部分程序员都是根据用户需求创建用户自定义存储过程 (本文系统存储过程和扩展存储过程不做介绍) , 即带参数的存储过程和不带参数的存储过程, 以下将通过具体实例介绍这两种存储过程的应用。

在创建存储过程时需要指定以下内容:存储过程名称、参数、参数类型、存储过程的过程体等, 语法格式如下:

在某一学校School数据库中有工资表earnings, 主要字段有教师姓名 (N am e) 、所属部门 (D epartm ent) 、工资年月 (G z M onth) 、应发合计 (G z Y f) 、扣税合计 (G z Ks) 、实发合计 (G z Sf) 等。

实例1:创建一个名为earnings_proc1的存储过程, 功能是从数据表earnings中查询“教学部门”的教师工资信息, 具体语句如下:

分析:从earnings表中查询“教学部门”的工资信息, 需要在存储过程中加入D epartm ent列, 赋值为“教学部门”, 然后在执行该条存储过程, 即可得到“教学部门”教师的工资信息, 语句如下:

实例2:创建一个名为earnings_proc2的存储过程, 功能是输入2个日期型数据, 使用输出参数返回这2个日期之间的教师工资信息。

执行存储过程语句如下:

需要注意的是:带参存储过程在调用时, 需要声明传递的参数, 这个参数要声明为局部变量, 用来存放参数的值, 输入的数据类型必须要和参数的数据类型相同。

存储过程存放在SQ LServer数据库中, 在使用存储过程时一定程度上限制了可移植性。

存储过程同数据库和代码程序一样, 保存在服务器, 所以在部署前存储过程也需要像程序代码一样要进行相应的测试。

5 结束语

存储过程在大量的数据信息管理系统里得到广泛的应用, 它极大提高了应用程序的运行效率、保障数据安全与完整, 简化程序员编程流程, 同时也增强了应用程序的可维护性, 提高程序开发的效率。因此, 存储过程在数据库应用系统中有着举足轻重的作用。

摘要:本文阐述了当前大数据环境下, 基于数据库SQL Server2005中存储过程的相关技术, 简要介绍了存储过程的概念、类型、作用及通过具体应用实例描述带参与不带参的存储过程技术, 完成相应的数据操作。利用存储过程技术对数据进行操作, 可以极大的提高数据库执行的效率, 同时也说明存储过程在数据库操作中的重要性。

关键词:数据库,存储过程,SQL Server2005,大数据

参考文献

[1]李萍.存储过程在论文管理系统中的应用[J].科技广场, 2009.

[2]冯洪峰.存储过程在SQL Server中的应用[J].电脑编程技巧与维护, 2010.

篇3:存储过程创建与应用

摘 要:基于存储过程的执行速度快、安全性高等优势,利用存储过程分析设计一种简易教学系统。在分布式应用环境下将对数据库的访问做在业务逻辑层上,通过存储过程实现对数据的所有操作处理,这样既可以降低整个应用程序的复杂性,也可以提高数据处理速度,方便用户操作。针对存储过程和MVC三层架构模式的优点,设计实现了简易教学系统,并给出了设计原理及实现方案。

关键词:存储过程;MVC三层架构模式;简易教学系统

中圖分类号:TP311 文献标志码:A 文章编号:1673-8454(2016)23-0086-04

一、引言

随着社会的发展,学校中教师和学生的规模不断扩大,使教师和学生信息数据量急剧增长,从而导致管理教师和学生信息的工作变得越来越繁杂,如何利用计算机技术帮助教师更快、更好地完成此类工作是非常有必要的。[1]通常情况下,对于基本信息的添加、删除、修改和查询等基本操作,使用Excel软件来完成也是可行的,但安全性不能保证,共享性体现不了,并且查询很不方便。尤其当涉及多个数据表格联合查询时,使用Excel软件进行数据处理会增加很大的工作量,在对其中一个数据表格进行处理时,也不能确保其它相关联的数据表格中数据的一致性。[2]因此,需要借助软件开发技术,编写小的应用程序,利用数据库技术对大量的数据进行保存、添加、删除、修改等操作,以便能够更好地利用数据资源。

Microsoft SQL Server是Microsoft研制开发的一款数据库管理系统,具有操作简单易学的特点,用户可以以很高的安全性、可靠性和可扩展性运行关键任务,具有很强的安全保密性。作为数据存储,SQL Server性能可靠,数据管理功能强大。[3]以其低价位、功能多、用户界面友好而被广泛地应用在大多数分布式Web应用程序中,是目前最常用的数据库系统之一。[4]

二、SQL应用与设计环境选择

SQL(Structured Query Language)语言是一个通用的、功能很强的关系数据库的标准语言,是一种介于关系代数与关系演算之间的结构化查询语言,其功能不仅仅是查询,用于存取数据以及更新、统计和管理关系数据库系统。

1.SQL语言对数据操作具有的优点[5]

(1)非过程化语言;

(2)统一语言,是所有关系数据库的公共语言。

SQL Server主要功能及其命令动词如表1所示:

数据定义是通过CREATE、DROP、ALTER命令,实现对基本表、视图以及索引文件的定义、修改和删除操作,还可以定义存储过程、触发器等模块。数据操纵是通过SELETE、INSERT、UPDATE、DELETE命令,实现数据查询和数据更新两种操作语句。其中,数据查询是指对数据库中的数据查询、统计、排序、检索、分组等操作,数据更新是指数据的插入、删除、修改等操作。数据控制是指对数据的操作权限控制。通过GRANT、REVOKE命令实现对数据库用户的授权和收权的存取控制,以保证数据的安全性。

对数据库的操作主要是通过以上SQL命令动词实现,但编写实现系统的程序代码时,考虑应用在分布式环境中,使用独立的SQL命令实现对数据库的访问,不利于数据的安全保护,因此会采用MVC框架结构和存储过程实现数据库访问。

MVC框架结构由模型(Model)、视图(View)和控制器(Controller)三部分组成。MVC结构将传统的输入、处理和输出功能映射到一个逻辑的图形化用户界面结构中。[6-9]MVC框架结构如图1所示。

模型(Model)表示业务逻辑操作等,在MVC中拥有最多的处理业务,负责在数据库中存取数据,能为多个视图提供数据操作。视图(View)是用于屏幕上的显示。模型进行操作之后,其结果通过视图来显示。控制器(Controller)用于管理用户与视图发生的交互。用户发出请求,控制器将相应的信息传递给模型进行处理,模型与视图匹配在一起,共同完成用户的请求。[6]他们各自处理任务。使应用程序的输入、处理和输出分开。

当前台页面发送数据请求时,控制层接受请求并调用相应模型去处理请求,由模型调用存储过程,在服务器端得到处理结果后,再将返回的数据在前台显示,模型调用的是存储过程,而不是SQL基本语句,屏蔽了数据库中表的结构、数据关联、用户使用权限等重要信息,提高了系统安全性。将业务逻辑封装在数据库系统的存储过程中,可以大大提高整个软件系统的可维护性,提高系统的共享性。合理编写存储过程,可以最大限度地利用SQL Server的各种资源。

2.SQL存储过程具有的优点

(1)执行速度快,改善系统性能

存储过程在服务器端运行,可以利用服务器强大的计算能力和速度提高执行速度。而且存储过程是预编译的,第一次执行后的存储过程会驻留在高速缓存中,以后直接调用,执行速度很快,如果某个操作需要大量的T-SQL语句或重复执行,那么使用存储过程比直接使用T-SQL语句执行得更快。

(2)减少网络流量

用户可以通过发送一条执行存储过程的语句实现一个复杂的操作,而不需要写上百条T-SQL语句,这样可以减少在服务器和客户端之间传递语句的数量,减轻了服务器的负担。

(3)增强代码的重用性和共享性

存储过程在被创建后,可以在程序中被多次调用,而不必重新编写。所有的客户端都可以使用相同的存储过程来确保数据访问和修改的一致性。而且存储过程可以独立于应用程序而进行修改,大大提高了程序的可移植性。

(4)提供了安全机制

如果存储过程支持用户需要执行的所有业务功能,SQL Server可以不授予用户直接访问表、视图的权限,而是授权用户执行该存储过程,这样可以防止把数据库中表的细节暴露给用户,保证表中数据的安全性。

鉴于SQL存储过程的以上优点,本文设计系统应用在网络环境中,采用存储过程处理数据,存储过程封装数据库操作,可以有效提高程序的性能。[8]调用存储过程时,通過指定存储过程的名字并给出参数(如果存储过程带有参数)来执行,避免了代码冗余,从而提高系统开发效率。

三、简易教学系统的设计

针对中学生的教学管理工作,在数据量比较大的情况下,使用存储过程将简单的查询组合在一起,将数据的处理转移到后台数据库中,基于存储过程和MVC三层架构模式设计实现简易教学系统,实现了学生、教师和课程信息的管理。本系统采用了Microsoft Windows 7操作系统、SQL Server 2008作为后台数据库,采用MyEclipse10开发环境,设计并实现了一套完善的简易教学系统。

1.系统功能分析

简易教学系统针对的是学校里的教师、学生以及课程模块的管理。[10-17]主要功能包括:学生基本信息管理、教师基本信息管理、课程信息管理、学生成绩管理、授课信息管理。其功能结构如图2所示:

学生基本信息管理:该模块实现了增加学生基本信息、修改学生基本信息、删除学生基本信息以及查询学生基本信息等。

教师基本信息管理:该模块实现了增加教师信息、删除教师信息、修改教师信息以及查询教师信息等。可以统计某一地区教师信息,教师性别统计及某年龄段的统计。可以根据身份证的前四位查询该地区教师的信息等。

课程信息管理:该模块实现了增加课程信息、修改课程信息、删除课程信息以及查询课程信息。

学生成绩管理:该模块实现了增加学生成绩、修改学生成绩、删除学生成绩、查询学生成绩、查询学生排名、统计选修科目等。学生也可以查询某门课程的成绩,不及格门数统计以及总评成绩等。

授课课程信息管理:该模块实现了增加授课信息、修改授课信息、删除授课信息以及查询授课信息等。

2.系统数据库设计

(1)数据库表设计

本研究中,系统后台数据库主要设计了5个数据表——学生信息表、教师信息表、课程信息表、学生成绩表和授课信息表。各数据表及其主要字段如下所示(下画线代表主键):

学生信息表(学号、姓名、性别、身份证号、民族、班级号、入学时间、家庭地址、政治面貌)

教师信息表(工号、身份证、姓名、性别、民族、年龄、出生地址、专业、职称)

课程信息表(课程号、课程名、开课学期、学分)

学生成绩表(学号、课程号、成绩、学期、学年)

授课信息表(工号、课程号、班级号、课程名、授课地点、授课学期、周学时)

(2)存储过程设计

存储过程是一组为了完成特定功能的SQL语句集,[9-11]存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法。存储过程因其执行效率高、与事务处理结合、运行更安全等优点,在数据库应用程序中被广泛采用。创建存储过程的语法为:[12]

CREATE PROCEDURE <过程名> [;<版本号>]

[@<参数名><参数类型>[=<默认值>][OUTPUT]…]

[WITH RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION]

AS

在上面的CREATE PROCEDURE语句中,尖括号“< >”里的内容是必须要有的。方括号“[ ]”里的内容是可选的,参数的命名必须加“@”符号。方括号里符号“|”是或的关系,两边的选项可以任选一项。

存储过程创建后,以编译的形式存储于数据库服务器端,供应用程序调用。如果不调用,存储过程是不会执行的。通过调用存储过程时,实参的数量、顺序、类型要与定义存储过程时的形参的数量、顺序、类型相匹配。

存储过程按返回的数据类型,可以分为两类:[13-14]一类简单存储过程相当于SELECT语句,用于查询数据,查询到的数据以结果集的形式返回;另一类存储过程是通过输出参数返回信息,或不返回信息只执行一个动作。

根据不同的功能需求,本研究系统设计了如下存储过程。

简单存储过程主要包括:

> 查询所有学生的信息。

> 统计不同性别的学生人数。

> 统计所有课程都合格的学生信息。

> 查询所有教师的基本信息。

带参数的存储过程,向存储过程指定输入、输出参数的主要目的是通过参数向存储过程输入和输出信息来扩展存储过程的功能。通过使用参数,可以多次使用同一存储过程并按用户要求查找所需要的结果。

学生基本信息管理:

> 查询某学生的基本信息。

> 根据身份证,计算某学生的年龄。

> 修改某学生的家庭住址。

> 删除某学生的信息。

教师基本信息管理:

> 统计某教师的基本信息。

> 统计教师信息表中某地区的教师信息和人数。

> 统计某年龄段的教师人数。

对于课程信息管理:

> 查询某课程的基本信息。

> 修改某课程的学分。

> 删除某课程的基本信息。

对学生成绩表:

> 查询某学生的所有成绩以及该学生所选修课程门数。

> 查询某学生所有不及格成绩,并统计不及格课程门数。

> 查询某学生所学课程的总评成绩及班级排名。

> 查询某学生某门课程的成绩。

> 查询某门课程的统计信息(最大值、最小值、平均值、总人数)。

> 查询某课程所有比平均成绩高的学生姓名及成绩。

> 统计某门课程不及格学生人数。

> 统计某课程在某分数区间的学生成绩。

四、系统实现

通过以上分析设计,完成了简易教学系统。系统界面主要由3部分组成:一是显示系统的名称界面,功能是显示系统的标题;二是功能的导航,目的是链接到各个具体功能界面、对系统的各个功能进行的管理操作;三是结果显示,目的是能够显示所有功能的内容,是对教学信息系统模块进行具体操作。

系统存储过程示例如下:

(1)查询某学生某门课程的成绩。功能是根据学生姓名和课程名查询学生这门课程的成绩。

(2)查询某学生所有不及格的成绩,并统计不及格课程门数。功能是根据学生姓名查询不及格的科目成绩,并统计不及格科目。

系统界面如图3所示:

五、总结与展望

本文讨论了SQL基本数据处理与存储过程数据处理的特点,并在介绍存储过程优点的基础上,结合MVC三层架构模式,分析、设计并实现了基于存储过程的简易教学系统,可以方便管理教师和学生信息,为类似教学信息系统的设计与实现提供借鉴。但是,该系统在界面优化、细节设计等方面还存在一些不足,比如增加管理员和学生登录界面,而且可以增加考勤模块,通过管理学生的日常考勤,可以统计学生的最终成绩。下一步将在本文研究的基础上,展开考勤方面的研究,以进一步优化和完善系统功能。

参考文献:

[1]杨开城.教学系统分析技术的初步研究[J].中国电化教育,2007(8):1-5.

[2]郑少兰.电子表格与SQL Server的结合应用[J].电脑知识与技术,2006(35):17-18.

[3]石道生,张士军,孙山.SQL Server数据库触发器与存储过程技术在自定义数据表中的应用[J].计算机与现代化,2004(3):22-24,27.

[4]陈一明.SQL Server数据库应用技巧探讨[J].科学技术与工程,2008(12):3334-3337.

[5]苗雪兰,刘瑞新,宋歌.数据库系统原理及应用教程(第3版)[M].北京:机械工业出版社,2011:1-325.

[6]康建萍.基于MVC模式的Struts框架研究与应用[J].电脑知识与技术(学术交流),2007(2):49-51.

[7]张计龙,张成洪,张凯,宓詠,郭超,郭家银.基于改进MVC的高校人事管理系统[J].计算机工程,2004(8):191-194.

[8]白杨.探究SQL SERVER存储过程[J].电脑知识与技术,2011(34):8769-8770,8776.

[9]王鹏,王晓亮,张喆,吴仁彪.基于存储过程的通航飞行数据处理系统[J].计算机工程与设计,2015(4):1084-1089.

[10]王翠娥.基于WEB的教学系统的设计与实现[D].电子科技大学,2013.

[11]常红梅.基于存储过程的数据库安全性实践初论[J].网络安全技术与应用,2015(4):112-114.

[12]季刚.基于存储过程的主从服务器数据库同步的实现[J].计算技术与自动化,2012(3):114-116.

[13]陈潇.SQL Server2008数据库存储过程的应用[J].软件工程师,2015(6):18-19.

[14]张申勇,蔡培茂,廖继勇,乐小燕,孙细斌.浅析SQL Server中视图、存储过程和函数的异与同[J].电脑知识与技术,2011(23):5570-5573,5577.

[15]李衛华,颜建军.基于MVC模式的人事管理系统的设计与实现[J].三明学院学报,2009(4):416-419.

[16]徐红,李睿,李进,曾珂.基于存储过程的计费查询统计系统设计与实现[J].现代电子技术,2005(13):76-78.

[17]沈黎.基于网络数据库的存储过程和触发器应用研究[J].西南师范大学学报(自然科学版),2016(3):51-55.

篇4:存储过程创建与应用

存储过程是数据库中的一个重要对象,它是一组为了完成某个特定功能的程序语句集,经编译后存储在数据库中。当需要使用该功能时,用户只需通过指定存储过程的名字并给出相应的参数(如果该存储过程带有参数)来执行它。

传统方式下,开发人员采用T-SQL脚本来创建存储过程。然而,在Visual Studio 2005及更高版本的集成开发环境(以下统称为VS.NET)中,SQL Server已经完全支持.NET通用语言运行时(CLR)。这意味着,可以使用.NET高级语言(如C#.NET、VB.NET)来开发存储过程、函数和触发器等数据库对象。相比传统方式而言,SQL Server和CLR的集成具有许多优点,如实时编译、类型安全、增强的安全性以及增强的编程模型等。

本文主要介绍了在VS.NET中创建SQL Server存储过程的两种方法,重点阐述了如何利用C#.NET语言来创建具有数据加密功能的存储过程的方法和步骤。同时,对这两种方法进行了分析和比较,并指出了各自的适用场合。

1 创建SQL Server存储过程的两种方法

在VS.NET中,主要有以下两种创建SQL Server存储过程的方法:

1.1 利用T-SQL脚本语言创建存储过程

可以使用CREATE PROCEDURE命令来创建存储过程,其语法规则如下:

1.2 利用.NET高级语言创建存储过程

在SQL Server 2005及其更高版本中,数据库系统已经完全支持.NET通用语言运行时。换句话说,可以使用诸如C#.NET或VB.NET等高级语言来开发存储过程、函数和触发器等数据库对象。

有关如何利用.NET高级语言来创建存储过程的方法和步骤,将在下一节具体阐述。

2 利用C#.NET语言实现加密存储过程

本节将以Visual Studio 2008开发环境为例,利用C#.NET语言实现一个存储过程uspHashEncrypt。该存储过程包含一个参数用户密码userPwd,其功能是对用户密码作加密处理后再保存到数据表中,从而实现密码的安全性。步骤如下:

1)启动Visual Studio 2008,新建项目,项目类型为数据库,模板为SQL Server项目,输入项目名称HashEncrypt。

2)新建/选择数据库引用。如果是初次使用,可以根据提示新建一个数据库引用;否则,可直接选择一个已经存在的数据库引用。

3)依次选择项目→添加新项→存储过程,输入名称uspHashEncrypt,单击添加按钮。

4)编码实现。部分关键代码如下:

5)编译部署。按F5开始启动调试,如果没有错误,则可右击项目名称,点击部署即可。进入SQL Server管理平台,可以看到存储过程创建成功,如图1所示。

由于SQL Server 2005内嵌.NET的操纵代码,而且这些代码是二进制的,因此其执行速度比T-SQL语句快得多。

3 两种方法的分析与比较

从以上介绍可以看出,利用.NET高级语言创建存储过程有许多优点,如更强的程序设计逻辑、更高的安全性以及更快的执行速度等。然而,.NET语言并不能完全替代T-SQL语言。表1对这两者进行了比较:

一般地,对于纯粹的数据访问,如基本的数据访问增加、修改、删除和查询操作,用T-SQL脚本语言比较合适。对于复杂的业务逻辑、面向对象分析设计、结构化处理和网络等,采用.NET高级语言比较合适。

4 结束语

本文首先介绍了VS.NET环境中两种创建存储过程的方法,然后通过实例阐述了如何利用C#语言来创建具有数据加密功能的存储过程的方法和步骤。最后,从多个方面对这两种方法进行了比较,并指出了各自的适用场合。

参考文献

[1]Bipin Joshi.Creating SQL Server Stored Procedures usingC#[EB/OL].http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx,2007.

[2]陈晓姗.SQL Server存储过程浅析[J].计算机与网络,2009(36):170-172.

[3]亓文娟.对SQL Server存储过程的研究与应用[J].廊坊师范学院学报(自然科学版),2010,10(6):34-37.

篇5:如何创建存储空间?

那是由于Windows 8存储空间里面的空间旨在把存储在里面的数据映射到存储池中的其他驱动器,所以你可以保护数据,防范驱动器故障构成的威胁,不一定要购买和维护专门的RAID驱动器。虽然存储空间方案并非万无一失,但它大大提高了这种可能性:万一存储池中的一个或多个驱动器出了故障,总有一份数据仍可以通过存储池中的一个或多个其他驱动器确保可用(或可以重构)。存储空间为你提供了一种简便的方式来管理庞大数据池,尤其是逐渐变得庞大的数据池(比如家人照片簿或影片库)。

为了创建一个新池,先要确保你想要添加到池里的所有存储设备都连接到PC;然后按键,键入control panel,按回车键,打开Windows 8控制面板。选择控制面板中的Storage Spaces(存储空间)选项,然后选择创建新的池或存储空间。

Windows 8会显示连接到PC,并与存储空间兼容的一系列驱动器。选择你想用在新存储池中的驱动器,但是要小心:Windows 8会对它们进行格式化,这意味着你将永会失去已经存储在上面的任何数据。创建池之前,点击你想使用的每个驱动器旁边的View files(查看文件)选项,检查内容。如果你没有看到自己的一个或多个驱动器标出来,确保它们已正确连接到PC上,而且与Windows 8兼容。一旦你选择了想格式化、添加到新池的所有驱动器,按菜单底部的Create pool(创建池)按钮。

现在要为池中的第一个存储空间命名,为它分配驱动器符和最大容量,然后选择所需的数据弹性级别。取个容易记住的名称,不用过于担心驱动器符或最大容量;必要的话,以后可以更改那些参数。倒是要注意弹性级别这个设置,这需要选择Windows 8如何让你的数据在存储池中多个驱动器之间具有冗余性。可以创建具有弹性的池,以免一个或多个驱动器同时出现故障,不过更高的弹性级别需要池中有更多的驱动器;查看每个弹性选项的描述,了解更多的详细信息。一旦你对自己的选择感到满意,点击菜单底部的Create storage space(创建存储空间)按钮,Windows 8会对新的存储空间进行格式化。

篇6:存储过程创建与应用

1 学生成绩数据库介绍

作者创建函数和存储过程,是以学生成绩数据库为载体。文中所述内容涉及数据库中四张数据表,它们分别是:学生档案表(xa01)、学生成绩表(xa05)、班级编码表(tb03)和课程编码表(tb01),其字段名称和数据库关系如图1所示。

数据表中字段tb0301、xa0114和xa0502为班级编码;tb0302为班级名称;xa0101和xa0501为学生编码;tb0101和xa0506为课程编码;tb0103为课程名称;xa0509为考试成绩。xa0509数据类型为Varchar(6)。

2 成绩转换函数设计

字段xa0509用于记录考试成绩,考虑到系统实际使用过程中,成绩的录入有百分制和五级制两种形式,所以其数据类型采用了Varchar类型。成绩字段的这种设计方便了不同评分方式课程成绩的录入,但在进行成绩统计时,需要进行相应的转换。当按五级制统计时,需要将成绩表中按百分制评分的转换成五级制,当按课程进行平均分、最高分等统计时,则需要将五级制转换成百分制。成绩的转换可通过函数来完成,下面是设计百分制转换成五级制函数的部分SQL程序。

程序中,语句“else@score”的作用是:如果成绩数据转换前采用的是五级制,则转换后其值保持不变。缺少该语句,将会造成五级制成绩数据被错误转换成null值,从而影响统计结果的准确性。

有关五级制转换成百分制的函数,其名称为score_change1,设计方法与上述相似,在此不再赘述。

3 成绩分组统计函数设计

在学生成绩管理系统中,经常用到的一种分组统计是:对不同班级,按课程统计学生成绩平均分、最高分、最低分以及在各分数段上学生成绩的分布情况(参见图2)。设计过程中,考虑到不同班级所修课程以及课程数是随班级动态变化的,因此可将课程名作为统计标志行,而把数目相对固定的平均分、最高分和成绩等级名等作为统计标志列。学生成绩统计要求返回表类型数据,作者在具体设计时采用了多语句表值型函数和单语句表值型函数两种方法。

在设计多语句表值型函数时,先要对函数中临时表的结构进行设计,其字段名和字段数可依据统计表中标志列的名称和数量进行确定,本例所设计结构如图2所示。表结构确定以后,接下来要编写函数的SQL语句,以完成向临时表中写入统计数据。临时表中的第一列数据“课程名称”是统计表的分组标志,是对临时表中其它各列进行处理所要依据的条件,因此写入数据时要首先进行,其对应的SQL语句如下,应使用insert命令。

向“优秀”列中写入数据的SQL语句如下,只能使用update命令。语句中条件部分的写法类似于相关子查询,通过“tb0103=课程名称”对更新行进行间接定位。

向其它各列写入数据的SQL语句与“优秀”列相似。都只能使用update命令。统计时五级制标志列都使用count()函数;而平均分、最高分和最低分标志列则分别使用avg()、max()和min()函数,且参数“xa0509”应使用下列语句进行类型转换:

上述学生成绩统计也可以使用单语句表值型函数来完成。根据前述,统计学生成绩在五个成绩等级上的分布时,对记录进行筛选的条件是相互排斥的,因此在设计单语句函数时,需要解决的关键问题是:如何在一条select语句中同时设置五个相互排斥的条件。作者采用的方法是:针对具体的成绩等级,如果xa0509字段的值处于等级范围内,即通过case语句,将其值转换为整形数“1”,否则转换为整形数“0”,然后再使用sum()函数对转换后的整形数进行求和,所得结果即为成绩处于该等级范围内的学生数。采用该方法将不同分数段的统计条件分置于各自的sum()函数内,避免了相互干扰。单语句表值型函数中的部分SQL语句如下:

在SQL Server环境下,调用学生成绩分组统计函数的输出结果如图2所示。

4 设计存储过程动态建立统计标志列

在学生成绩管理系统中,除了标志列固定的分组统计以外,经常还要用到标志列从名称到数量都是动态变化的分组统计,如:对不同班级,按学生汇总各门课程成绩(参见图3)。由于不同班级所修课程和课程门数是不相同的,上述汇总表设计时标志列应设计成可动态变化。

建立标志列可动态变化的统计表,实际上是要求数据库对象中所创建的数据表能够在程序运行中根据查询结果实时进行字段的增删。在SQL Server中,函数对象不允许使用Alter Table语句,因此无法创建字段可变的动态数据表,而存储过程,不仅可以增删数据表字段,而且可以更改字段名,可以很好的满足动态数据表的设计要求。

设计时,先创建数据表基本结构,即先在数据表中将固定标志列创建成对应字段,本例为“姓名”和“学号”,SQL语句如下:

接下来,将指定班级的学生姓名和学号写入到刚创建的数据表中。向数据表写入姓名和学号要于动态添加字段前完成,以作为更新所添加字段数据的条件。

设计中动态添加字段(课程名)和写入课程成绩是设计的关键,整个过程可使用循环结构来完成。循环次数通过查询指定班级课程数来确定,它也是所要动态添加的字段数。循环体中,第一步先向数据表中添加一个字段,字段名可临时使用一字符串常量,本例使用“课程名”;第二步采用top 1排序查询,从班级课程列表中取出一门课程,并以此为条件查询班级学生成绩,然后对刚添加的字段中的数据进行更新;第三步修改字段名,用课程列表中获取的课程名替换用字符串常量命名的字段名。

最后通过存储过程中的临时表输出统计结果。

在SQL Server环境下,调用学生成绩汇总存储过程的输出结果如图3所示。

5 结束语

以上通过两个较典型的应用介绍了在SQL Server中设计用于复杂分组统计的函数和存储过程的方法。作者在设计过程中,还结合前台程序进行了综合调试。将复杂的SQL语句从前台程序中分离出来,既提高了前台程序设计的效率和灵活性,又提高了后台数据库的可维护性。

参考文献

[1]李萍.数据库设计与应用[M].北京:高等教育出版社,2008.

[2]魏房中,卞莉.SQL CLR聚合函数在环境质量业务数据计算中的应用[J].环境监控与预警,2010(1).

篇7:存储过程创建与应用

我院自2007年建立了PACS系统,工作流程如下:

(1)病人在预约登记工作站录入病人基本信息,使用扫描仪扫描申请单;

(2)在CR检查室摄片,经CR工作站获取图像后自动将影像数据传送至PACS服务器保存;

(3)影像科医生在诊断工作站上观看图像,并可对图像进行后处理,调用报告模板书写诊断报告,根据需要可从技师工作站或在CR工作站打印激光胶片;

(4)临床医生可在各科室配备的工作站随时调阅图像及诊断报告。

经过两年多的实际应用,我对PACS系统有了一定的体会,现介绍如下:

(1)缩短了出报告时间,病人拍完片后,CR系统即可自动将数据传至PACS服务器保存,报告医生直接从诊断工作站调取病人申请单及图像,并利用报告模板书写报告。与传统手工书写相比,出报告时间大幅缩短,并且打印出的报告字迹清晰,书写规范,极大的提高了工作效率,提高了服务质量。对于急诊病人,拍完片后临床医生立即可在线调阅,为及时抢救急诊病人提供了宝贵的时间。

(2)提高了诊断质量:我科诊断工作站配置巨鲨竖屏专业显示器,分辨率高,具有12bit灰度值,图像层次丰富,清晰度高,医生可利用工作站上的各种后处理功能,对图像进行观察,极大的提高了病变检出率,例如有次我看到一例手指异物的病人,病人自述有玻璃刺入手指,拍片后用常规观察手的窗宽窗位观察,未发现异常,可是调节窗宽窗位并进行图像放大后,即显示出软组织内有一细小异常密度影,后经手术证实为一细小玻璃异物。

(3)提高了工作效率:PACS系统中有报告模板功能,使报告医生摆脱了繁重的传统手工书写,另外,多种影像资料信息共享,可使报告医生方便的将各种检查影像综合分析,及时准确地做出诊断。目前我科每位报告医生每天平均完成70~80份报告,这在以前是不可想象的。

(4)方便了影像资料的存储与管理:传统的医学图像保存,存在许多问题,如需要建立胶片库来储存数量庞大的胶片,管理难度与数量同步增长,耗费大量财力、物力、空间,资料查询速度慢,图像传递需要大量时间,还会因胶片的丢失、片损和变质而使信息丢失。建立PACS系统之后,这些问题迎刃而解,所有资料都存入数据库中,解决了保存胶片的问题;采用计算机技术管理影像资料,可快速、方便的随时在各个工作站调阅影响资料,极大地提高了工作效率。

(5)提高了科室的服务质量和管理水平:由于系统自动化程度高,加快了工作流程,减少了病人等待时间,提高了病人满意度;PACS系统的统计功能、查询功能等,使科室的质控、工作量统计等变得快捷方便,医院及科室管理层也可通过PACS系统统计科室的工作量、经济收入等量化指标,对医院进行实时、系统地监督管理。

(6)有利于计算机辅助教学:可从PACS系统中调阅符合教学内容要求的图像,制作成教学幻灯片,采用大屏幕投影仪教学。

篇8:存储过程创建与应用

在以数据库为核心的大中型应用系统中,通常需要处理海量数据,数据的存储和查询速度直接影响应用系统的性能。存储过程是一组保存在数据库中的,经过预先编译和优化的,执行数据库操作的SQL语句。存储过程可以作单独的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程作为数据库对象存储在数据库中,执行一次后,其编译好的代码存储在高速缓冲存储器中,再次使用时直接调用,无需再次编译即可执行,使执行速度大大提高。因此,使用存储过程完成对数据库的操作,可以有效提高数据存储和查询的速度。同时,存储过程还可以降低整个应用程序的复杂性,提高重用性、安全性和可伸缩性。本文详细介绍在Visual C#开发平台下,主要用Transact-SQL编写存储过程存储在SQL Server中,并创建应用程序来调用存储过程,返回结果,然后对数据结果进行处理。且都提供对存储过程直接访问的功能。通过具体的例子,介绍了在SQL Server数据库中如何使用存储过程实现复杂的数据处理功能。

当应用程序需要访问服务器上的数据时,在不建立存储过程的情况下。通过网络将Transact-SQL语句发送至服务器,服务器对语句编译后再传递给客户端。这种方式对于大量数据处理的事务,增加了网络上的传输量,加重了客户端的负担。

存储过程就是一种Transact-SQL语句,编译在单个的执行计划中。它在服务器端对数据库记录进行处理,然后将结果发给客户端。这样,既充分利用了服务器强大的计算能力,也避免了应用程序执行时需要大量数据从服务器下载到客户端,减少了网上的传输量,同时也提高了客户端的工作效率。

2 存储过程的特点

第一,执行速度快:存储过程在创建时就经过了语法检查和性能优化,因此在执行时不必再重复这些步骤。存储过程经过第一次调用后,驻留在内存中,不必再编译和优化,所以执行速度很快。第二,模块化的程序设计:存储过程经过了一次创建以后,可以被无数次调用。用户可以独立于应用程序而对存储过程进行修改。可以按照功能模块的不同,设计不同的存储过程以供使用。第三,减少网络通信量:存储过程中可以包含大量的Transact-SQL语句。但存储过程在调用时只需一条语句就可以实现,所以大大减少了网络上数据通信的传输。第四,保证系统的安全性:设置用户通过存储过程来对某些关键数据进行访问,但不允许用户直接使用Transact-SQL或企业管理器来对数据进行访问。

3 存储过程

3.1 存储过程的创建

存储过程是用过程头定义的,过程头包括关键词Procedure、过程名和参数清单,紧接过程头后可定义任何过程范围的变量,代码的主体被定义为一个或多个块,块使用Begin和End语句限定范围,还可以附带错误处理Exception块。所有过程的定义都必须用End语句作为结束。创建存储过程可使用SQLPLUS、Transact-SQL、可视化数据库工具(Visual Database Tools)、Oracle过程生成器(Oracle Procedure Builder)等工具。

3.2 存储过程的结构和定义语法

一个MS SQL Server Transact-SQL存储过程由首部和主体组成,变量的声明是在过程主体中进行的。创建存储过程的语法如下:

CREATE PROCEDURE[EDURE]存储过程名[;版本号]

[({@parameter data-type}[VARYING][=default][OUTPUT][,…])]

[WITH RECOMPILE|ENCRYPTION

[FOR REPLICATION]

AS

SQL语句

3.3 存储过程的参数

参数用于在存储过程和调用存储过程的应用程序或工具之间交换数据,存储过程可以有零个或多个参数,这些参数会被用于程序逻辑中确定的某些动作,参数名和参数的数据类型被定义于程序设计单元的首部。存储过程的参数按其用途可分为两类:入口参数和出口参数。入口参数可用来把值传递给存储过程使用。入口参数的语法如下:

Create Procedure_name@param1 data_type,@paramN datatype

例如:create procedure usp_input@temp_name varchar(30)@total int,@current_date datetime

出口参数采用变量的形式向调用过程或程序返回结果值。声明出口参数的语法如下:

Create procedure procedure_name@parameter_name datatype OUTPUT

例如:create procedure usp_test@p1 int OUT

Declare@v_prodcount INTEGER

存储过程参数的传递方式主要有标准方式(按值传递)和使用参数名(按名传递)。

3.4 存储过程的执行

用EXECUTE语句可以运行一个存储过程。语法如下:

[EXEC[UTE]{[@return_status=]{<存储过程名>[;版本号]|@procedure_name_var}}

[[@参数=]{value|@variable[OUTPUT]|[DE-FAULT]][,…n]

[WITH RECOMPILE]

例如:EXEC insert_sc 0001,234

3.5 存储过程的删除

不再需要存储过程时可将其删除。语法如下:

DROP PROCEDURE{存储过程名}[,…n]

例如:DROP PRECDURE insert_sc

3.6 存储过程的调用

存储过程的应用方法是多种多样的,在不同的编程语言中使用的语法也各有差异。但调用存储过程的思路是基本一致的,一般可归纳为:①连接数据库;②定义输入输出参数;③执行存储过程;④关闭数据库连接。

4 存储过程的应用实例

为了提高数据的运行效率,在我们设计的教务管理系统中,我们应用了如下的存储过程从管理员角度创建增、删、改、查几个存储过程:

(1)增加管理员。

(2)删除管理员。

(3)修改管理员。

(4)查询管理员。

5 结论

本文以SQL Server 2008数据库为例,通过典型的实例,介绍了使用存储过程进行复杂数据处理的方法,开发人员稍加修改即可用于自己的应用程序开发。此外,从以上应用实例,我们可以体会到存储过程技术在数据编程方面的强大功能。在实际网络系统的开发工作中,由于存储过程的引入,可以使开发者的编程效率大大提高。

在数据库系统开发中,使用存储过程可以提高整个系统与数据库交互的性能,可以让数据库管理系统来优化对数据库的存取,但存储过程中业务逻辑也并非用得越多越好。所以在实际工作中,要根据具体情况和实际工作经验来确定如何编写存储过程。

参考文献

[1]冯洪峰.存储过程在SQL Server2005中应用[J].电脑编程技巧与维护,2010(14).

[2]蒋社想,程翠平.基于SQL Server存储过程的评标专家系统的研究与实现[J].长沙通信职业技术学院学报,2011(3).

[3]韦晨艳,杨键鸣,姚斯立.SQL数据库中存储过程.触发器的应用研究[J].中国信息界,2011(6).

[4]凃云杰.存储过程在教学管理信息系统中的灵活应用[J].电子制作,2014(18).

上一篇:高考语文全国卷三题型下一篇:理论知识题库1