第10章 存储过程
- 格式:pdf
- 大小:646.00 KB
- 文档页数:15
第一章:1、订单管理系统的功能有哪些?答:订单管理系统的功能主要有客户查询商品信息、客户预订商品并提交订单、销售人员处理客户的订单信息、销售人员管理商品信息、客户信息等。
2、说明ER模型的作用?答:ER模型(实体关系模型)是描述概念世界,建立概念世界的工具,ER方法把管理系统所要描述的问题划分为单个的实体,通过实体间的联系实现有效、自然地模拟现实世界。
3、什么是关系模型?关系的完整性包括哪些内容?答:关系模型就是用二维表格结构来表示实体及实体之间联系的模型,关系模型包括四类完整性:域完整性、实体完整性、参照完整性和用户定义的完整性。
4、按照功能,SQL语言分为哪4部分?答:按照功能,SQL语言分为数据定义语言、查询语言、数据操纵语言、数据控制语言。
5、规范化范式是依据什么来划分的?它与一事一地的原则有什么联系?答:规范化范式根据一个关系满足数据依赖的程度不同,可规范化为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
规范化范式遵循一事一地的原则,将描述一个独立事物的属性组成一个关系。
第二章:1、SQL Server2008有哪些新增特性?答:见教材17页2、SQL Server2008安装的软件和硬件环境是什么?答:参见教材表2-3、2-4、2-5、2-6。
3、SQL Server2008有哪些版本?有哪些服务组件?答:Microsoft SQL Server2008系统提供了多个不同的版本,不同的应用需求,往往需要安装不同的版本。
既有32位的版本,也有64位的版本,既有正式使用的服务器版本,也有满足特殊需要的专业版本。
其中,服务器版本包括了企业版和标准版,专业版本主要包括开发人员版、工作组版、Web版、Express版、Compact版等。
另外,还有企业评估版。
服务组件主要有SQL Server数据库引擎、Analysis Services、Reporting Services、Notification Services、Integration Services等。
翻译:陈拓 chentuo@2006 年 6 月16 日更多触发器概念Copyright © Oracle Corporation, 2001. All rights reserved.进度表: 时间 主题80 分钟 讲演40 分钟 练习120 分钟 总共目标完成本课程后, 您应当能够:• 创建附加的数据库触发器• 解释触发器管理规则• 实现触发器102 Copyright © Oracle Corporation, 2001. All rights reserved.本课目标在本课中,你将学习怎样创建更多地数据库触发器并学习规则触发器。
你还将学习许多应用程序触发器。
创建数据库触发器• 触发用户事件:– CREATE, ALTER 或 DROP– Logging on 或 off• 触发数据库或系统事件:– Shutting down 或 starting up 数据库– 一个指定的错误 (或任何错误) 出现103 Copyright © Oracle Corporation, 2001. All rights reserved.创建数据库触发器在编码触发器体之前,确定触发器的组建。
在系统事件上的触发器可以被定义在数据库或方案级别。
例如,一个数据库 shutdown 触发器 被定义在数据库级别。
在数据定义语言 (DDL) 语句上的触发器,或一个用户登录登出,即可以被 定义为数据库级别也可以被定义为方案级别。
在 DML 语句上的触发器被定义在指定的表或一个视图上。
一个定义在数据库级别的触发器对所有用户触发, 一个定义在方案或表级别的触发器只有当触 发级别包括该方案或表时才触发。
触发事件可能引起触发器触发:· 在数据库或方案中的一个对象上一个数据定义语句· 一个指定的用户 (或任何用户) 登录或登出· 一个数据库关闭或启动· 一个指定的或任何错误出现在 DDL 语句上创建触发器• 语法:CREATE [OR REPLACE] TRIGGER trigger_nametiming[ddl_event1 [OR ddl_event2 OR ...]]ON {DATABASE|SCHEMA}trigger_body104 Copyright © Oracle Corporation, 2001. All rights reserved.创建触发器语法DDL 事件 可能的值CREATE无论何时一个 CREATE 语句添加一个新的数据库对象到数据字典中时,引起 Oracle 服务器激发触发器ALTER无论何时一个 ALTER 语句修改一个在数据字典中的数据库对象时,引起 Oracle 服务器激发触发器DROP无论何时一个 DROP 语句删除一个在数据字典中的数据库对象时,引起Oracle 服务器激发触发器触发器体代表一个完整的 PL/SQL 块。
11.存储过程本章主题●什么是存储过程●创建存储过程●细说CREATE PROCEDURE命令●执行存储过程●重命名存储过程●修改存储过程●删除存储过程必杀技!不可不学!学习如何使用SQL来写stored procedure11.1. 什么是存储过程经过前四章的洗礼,相信您对Microsoft SQL Server程序设计已有了基本的认识。
第07章Transact-SQL程序设计第08章数据的查询、汇总、统计和分析第09章添加、修改和删除数据记录第10章视图本章开始更高级的内容。
存储过程包含一些Transact-SQL语句,并以特定的名称存储在数据库中。
存储过程是一种数据库对象。
可以在存储过程中声明变量、有条件执行以及其他各项强大的程序设计功能。
●它能够包含执行各项数据库操作的语句,并且可以调用其他的存储过程。
●能够接收输入参数并以输出参数的形式将多个数据值返回给调用程序。
具体示例:试着看看,看得懂吗?后面会详细介绍CREATE PROCEDURE getPerson @mName varchar(10), @mCur_salary moneyASUPDATE vfpmanSET cur_salary= cur_salary*1.2WHERE name=@mName AND cur_salary=@mCur_salary11.1.1.存储过程的优点●允许模块化程序设计●更快的执行速度,存储过程被预先编译和优化并存储在数据库中●有效降低网络流量●较好的安全,如限制某人对某个表操作,却又必须要求他对该表执行特定的操作。
11.2. 创建存储过程C R E AT E P R O C ED U R E命令在查询分析器中执行命令。
11.3. 细说CREATE PROCEDURE命令CREATE PROC [ EDURE ]procedure_name [ ; number ][ { @parameter data_type }[ V ARYING ] [ = default ] [ OUTPUT ]] [ ,...n ][ WITH{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ][ FOR REPLICATION ]AS sql_statement [ ...n ];number是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。
第十章一、填空题1.92. e3.@,变量名4.REPEAT5.DELIMITER二、判断题1.错2.错3.对4.对5.对三、选择题1. A2. D3. D4. C5. B四、简答题1.请简述存储过程和函数的区别。
答:(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。
(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。
(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。
(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT语句中直接使用。
2.请说一说触发器以及其作用。
答:概念:触发器可以看作是一种特殊类型的存储过程,在预先定义好的事件(如INSERT、DELETE等操作)发生时,才会被MySQL自动调用。
作用:①触发器可以通过数据库中的相关表实现级联无痕更改操作。
②保证数据安全,进行安全校验五、实训题11. 请在shop数据库中创建一个存储过程,以订单编号为参数,输出该订单的商品信息。
mysql> DELIMITER $$mysql> CREATE PROCEDURE shop.order_proc(IN order_id INT )-> BEGIN-> SELECT g.id, FROM sh_goods g-> LEFT JOIN sh_order_goods og ON g.id = og.goods_id-> WHERE og.order_id = order_id;-> END-> $$Query OK, 0 rows affected (0.01 sec)mysql> DELIMITER ;2. shop.sh_order_goods表上创建一个触发器,当添加订单-商品信息时,修改sh_goods表中对应商品的库存量。
第1章数据库概述1.填空题(1)Oracle(2)U 1U 2U 4U(3)体积小、安装成本低、速度快、源码开放(4)Memcached、Redis、mongoDB(5)大、中、小型网站中2.选择题(1)A(2)B(3)A(4)A(5)D3.简答题(1)常见的关系型数据库有MySQL、Oracle、SQL Server和Access数据库。
MySQL数据库主要应用在广泛地应用到互联网上的大、中、小型网站中;Oracle数据库主要应用在传统大企业、政府机构、金融机构、证券机构等;SQL Server数据库主要应用在部分电商和使用Windows 服务器平台的企业;Access数据库早期应用于小型程序系统ASP + Access、系统留言板、校友录等。
(2)关系型数据库按照结构化的方法存储数据,具备纵向扩展能力,采用结构化查询语言,强调ACID规则,强调数据的强一致性,可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以回滚事务。
非关系型数据库不需要固定的表结构,一般情况下也不存在对数据的连续操作。
不同点:关系型数据库使用表结构,非关系型的数据库格式灵活。
关系型数据库支持SQL语言,支持事务,非关系型数据库不提供SQL语言,无事务处理。
相对于关系型数据库,非关系型数据库在大数据存取上具备无法比拟的性能优势。
(3)应该注意MySQL的版本和开发人员使用的版本。
第2章环境的安装与基本配置1.填空题(1)Ubuntu CentOS Red Hat(2)RPM包二进制包源码包(3)仅主机模式NAT模式桥接模式(4)数据库语言(5)Mysqladmin、mysqldump等命令2.选择题(1)A(2)B(3)B(4)D(5)D3.简答题(1)在企业中应该使用源码编译方式安装MySQL,使用源码安装在编译安装过程可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
(2)VMware虚拟平台提供3种网络模式。
达梦创建存储过程实例-概述说明以及解释1.引言1.1 概述在信息化和数据化的时代背景下,数据库管理系统(DBMS)成为了管理和存储大量数据的重要工具。
达梦数据库是一种高性能、高安全性的关系型数据库管理系统,它提供了一系列强大的功能和工具,用于管理和操作数据库。
存储过程是数据库中一组预定义的SQL语句集合,可以被保存并以后被重复调用。
存储过程使得数据库的开发工作更加灵活和高效,可以通过简单的调用实现复杂的业务逻辑。
达梦数据库也支持创建存储过程,并且为开发人员提供了完善的存储过程开发和管理工具。
本文将以达梦数据库为例,介绍如何创建和使用存储过程。
首先,我们将对存储过程的概念和特点进行简要介绍。
然后,我们将详细讲解如何在达梦数据库中创建存储过程,并通过实例演示不同场景下存储过程的应用。
最后,我们将总结本文的主要内容,并展望存储过程在数据库开发中的未来发展趋势。
通过学习本文,读者将能够深入了解达梦数据库存储过程的基本原理和使用方法,提升数据库开发效率和程序性能,并为今后的数据库应用开发奠定扎实的基础。
1.2 文章结构文章结构部分的内容可以按照以下方式编写:2. 正文2.1 子章节12.1.1 要点12.1.2 要点22.2 子章节22.2.1 要点12.2.2 要点22.3 子章节32.3.1 要点12.3.2 要点2本文主要分为引言、正文和结论三个部分。
其中正文部分包含了三个子章节,分别是子章节1、子章节2和子章节3。
每个子章节下又包含了各自的要点。
通过这种层级结构,使得文章的结构更加清晰明了。
引言部分对文章的整体进行了概述,包括了概述、文章结构和目的三个方面的内容。
正文部分是文章的核心部分,具体展开了对达梦创建存储过程的实例的讲解。
结论部分对全文进行了总结,并对未来展望进行了描述。
这样的结构安排旨在使读者更好地理解文章内容,并能够按照章节的顺序逐步阅读,加深对达梦创建存储过程的理解。
同时,该结构也有助于作者更好地组织和表达思路,使文章更加清晰和条理。
《算法导论》读书笔记之第10章基本数据结构之二叉树摘要书中第10章10.4小节介绍了有根树,简单介绍了二叉树和分支数目无限制的有根树的存储结构,而没有关于二叉树的遍历过程。
为此对二叉树做个简单的总结,介绍一下二叉树基本概念、性质、二叉树的存储结构和遍历过程,主要包括先根遍历、中根遍历、后根遍历和层次遍历。
1、二叉树的定义二叉树(Binary Tree)是一种特殊的树型结构,每个节点至多有两棵子树,且二叉树的子树有左右之分,次序不能颠倒。
由定义可知,二叉树中不存在度(结点拥有的子树数目)大于2的节点。
二叉树形状如下下图所示:2、二叉树的性质(1)在二叉树中的第i层上至多有2^(i-1)个结点(i>=1)。
备注:^表示此方(2)深度为k的二叉树至多有2^k-1个节点(k>=1)。
(3)对任何一棵二叉树T,如果其终端结点数目为n0,度为2的节点数目为n2,则n0=n2+1。
满二叉树:深度为k且具有2^k-1个结点的二叉树。
即满二叉树中的每一层上的结点数都是最大的结点数。
完全二叉树:深度为k具有n个结点的二叉树,当且仅当每一个结点与深度为k的满二叉树中的编号从1至n的结点一一对应。
可以得到一般结论:满二叉树和完全二叉树是两种特殊形态的二叉树,满二叉树肯定是完全二叉树,但完全二叉树不不一定是满二叉树。
举例如下图是所示:(4)具有n个节点的完全二叉树的深度为log2n + 1。
3、二叉树的存储结构可以采用顺序存储数组和链式存储二叉链表两种方法来存储二叉树。
经常使用的二叉链表方法,因为其非常灵活,方便二叉树的操作。
二叉树的二叉链表存储结构如下所示:1 typedef struct binary_tree_node2 {3 int elem;4 struct binary_tree_node *left;5 struct binary_tree_node *right;6 }binary_tree_node,*binary_tree;举例说明二叉链表存储过程,如下图所示:从图中可以看出:在还有n个结点的二叉链表中有n+1个空链域。
《SQL Server 数据库》教学大纲一. 适用对象适用于本科学生二. 课程性质数据库是数据管理的最新技术,是计算机科学的重要分支,作为信息系统核心和基础的数据库技术在各级部门和企事业单位中得到广泛的应用。
《SQL Server 数据库》是计算机科学与技术专业的专业必修课,也是软件工程、通信等专业本、专科学生的必修课程之一。
Microsoft SQL Server是基于客户/服务器模型的关系数据库管理系统,它是一个功能全面整合的数据平台,包含了数据库引擎、分析服务、集成服务和报表服务等组件,为企业提供企业级数据管理和数据仓库、数据挖掘和联机分析处理等商业智能工具,在电子商务和数据库解决方案等应用中起着重要的核心作用,为企业的数据管理提供了强大的支持。
本课程以功能强大的关系数据库管理系统SQL Server 2019作为平台,全面系统地介绍了SQL Server的管理操作和应用开发,将基础知识和实际应用有机结合起来,主要内容有数据库系统概论、SQL Server 2019安装和操作、创建数据库和创建表、表数据操作、数据查询、视图和索引、数据完整性、T-SQL程序设计、存储过程、触发器、系统安全管理、备份和恢复、事务和锁定。
学生将对数据库技术的基本概念、原理、方法和技术有较深刻的理解,掌握SQL语言查询和编程的基本技术,掌握数据库系统安装、配置、管理和维护的基本技能,具备管理和开发简单数据库应用系统的能力。
三. 教学目的1. 掌握数据库技术的基本概念、原理、方法和技术。
2. 掌握SQL语言查询和编程的基本技术。
3. 掌握数据库系统安装、配置和数据库管理和维护的基本技能。
4. 熟悉常用的数据库管理和开发工具,具备管理和开发简单数据库应用系统的能力5. 了解数据库技术的最新发展。
四. 教材及学时安排教材:SQL Server 数据库技术与应用(SQL Server 2019版),赵明渊,清华大学出版社,2022年。
《Oracle数据库应用》理论课记录和集合⏹本章技能目标◆理解记录◆理解集合1.复合数据结构PL/SQL有两种复合数据结构:记录和集合。
记录由不同的域组成,集合由不同的元素组成。
2.PL/SQL 记录记录是PL/SQL的一种复合数据结构,scalar数据类型和其他数据类型只是简单的在包一级进行预定义,但复合数据类型在使用前必须被定义,记录之所以被称为复合数据类型是因为他由域这种由数据元素的逻辑组所组成。
域可以是scalar数据类型或其他记录类型,它与c语言中的结构相似,记录也可以看成表中的数据行,域则相当于表中的列,在表和虚拟表(视图或查询)中非常容易定义和使用,行或记录中的每一列或域都可以被引用或单独赋值,也可以通过一个单独的语句引用记录所有的域。
在存储过程或函数中记录也可能有参数。
1.1创建记录在PL/SQL中有两种定义方式:显式定义和隐式定义。
一旦记录被定义后,声明或创建定义类型的记录变量,然后才是使用该变量。
隐式声明是在基于表的结构或查询上使用%ROWTYPE 属性,隐式声明是一个更强有力的工具,这是因为这种数据变量是动态创建的。
显式定义记录显式定义记录是在PL/SQL程序块中创建记录变量之前在声明部分定义。
使用type命令定义记录,然后在创建该记录的变量。
语法如下:其中,typename 是类型名。
field_definition_list是由逗号分隔的列表。
域定义的语法如下:2域名必须服从与表或列的命名规则相同的命名规则。
下面我们看一个例子:例1:域定义时的%TYPE 属性用于引用数据库中的表或视图的数据类型和大小,而在此之前程序不知道类型和大小。
在上面的例子中记录域在编译时将被定义为与列SYMBOL 相同的数据类型和大小,当代码中要使用来自数据库中的数据时,在变量或域定义中最好使用%TYPE 来定义。
隐式定义记录隐式定义记录中,我们不用描述记录的每一个域。
这是因为我们不需要定义记录的结构,不需要使用TYPE 语句,相反在声明记录变量时使用%ROWTYPE 命令定义与数据库表,视图,游标有相同结构的记录,与TYPE 命令相同的是它是一种定义获得数据库数据记录的好方法。
数据库原理与应用教程(尹志宇著)课后习题答案下载尹志宇的著作《数据库原理与应用教程》是xx年清华大学出版社出版的图书,作者是尹志宇。
今天要与大家分享的是数据库原理与应用教程(尹志宇著),希望对大家有帮助!点击此处下载数据库原理与应用教程(尹志宇著)课后习题《数据库原理与应用教程:SQLServer》全面讲述数据库的基本原理和SQLServerxx的应用,全书以理论够用、实用,以实践为重点的原则,使读者能够快速、轻松地掌握SQLServer数据库技术与应用。
数据库原理与应用教程中第1~5章讲述数据库的基本理论知识,其内容包括数据库系统概述、数据模型、关系数据库、关系规范化基础、数据库设计。
第6~14章讲述数据库管理系统SQLSetverxx的应用,其内容包括SQLSetverxx数据库基础,Transact-SQL语言基础,数据库和表,数据库查询,索引和视图,存储过程、触发器和游标,事务与并发控制,数据库的备份与还原,数据库的安全管理;第15章利用一个实例介绍基于C#.NET的SQLServer数据库系统开发过程。
为便于学习,每章还配有丰富的习题。
《数据库原理与应用教程:SQLServer》可作为大学本科生“SQLServer数据库”课程的教学用书,也可以作为培养数据库系统工程师的培训教材,还可以作为数据库管理人员及数据库应用系统开发人员的参考用书。
第1章数据库系统概述第2章数据模型第3章关系数据库第4章关系规范化基础第5章数据库设计第6章SQLServerxx基础第7章Transact-SQL语言基础第8章数据库和表第9章数据库查询第10章视图和索引第11章存储过程、触发器和游标第12章事务与并发控制第13章数据库的备份与还原第14章数据库的安全管理第15章基于C#、NET的数据库系统开发参考文献1.数据库原理及应用教程试题及答案2.数据库答案-阳光大学生网3.数据库原理与实践教程模拟试题及参考答案4.数据库原理及应用教程试题及答案。
第1章习题参考答案1。
思考题(1)什么是数据库、数据库管理系统、数据库系统?它们之间有什么联系?答:数据库是存贮在计算机内的有结构的数据集合;数据库管理系统是一个软件,用以维护数据库、接受并完成用户对数据库的一切操作;数据库系统指由硬件设备、软件系统、专业领域的数据体和管理人员构成的一个运行系统。
(2)当前,主要有哪几种新型数据库系统?它们各有什么特点?用于什么领域,试举例说明?答:主要有:分布式数据库、面向对象数据库、多媒体数据库、数据仓库技术、空间数据库。
(3)什么是数据模型?目前数据库主要有哪几种数据模型?它们各有什么特点?答:数据模型是一组描述数据库的概念。
这些概念精确地描述数据、数据之间的关系、数据的语义和完整性约束。
很多数据模型还包括一个操作集合。
这些操作用来说明对数据库的存取和更新。
数据模型应满足3方面要求:一是能真实地模拟现实世界;二是容易为人们理解;三是便于在计算机上实现。
目前在数据库领域,常用的数据模型有:层次模型、网络模型、关系模型以及最近兴起的面向对象的模型。
(4)关系数据库中选择、投影、连接运算的含义是什么?答:1)选择运算:从关系中筛选出满足给定条件的元组(记录)。
选择是从行的角度进行运算,选择出的记录是原关系的子集.2)投影运算:从关系中指定若干个属性(字段)组成新的关系.投影是从列的角度进行运算,得到的新关系中的字段个数往往比原关系少.3)连接运算:将两个关系按照给定的条件横向拼接成新的关系。
连接过程是通过两个关系中公有的字段名进行的.(5)关键字段的含义是什么?它的作用是什么?答:一个关系中可以确定一个字段为关键字段,该字段的值在各条记录中不能有相同的值.(如:门牌号码);关键字段的作用主要是为建立多个表的关联和进行快速查询.(6)什么是E-R图?E-R 图是由哪几种基本要素组成?这些要素如何表示?答:E-R图也称实体—联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
第10章存储过程存储过程是SQL语句和可选控制流语句的预编译集合,它以一个名称存储并作为一个单元处理。
本章介绍存储过程的创建、执行、修改和删除等。
10.1 概述存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
存储过程可以使对数据库的管理,以及显示关于数据库及其用户信息的工作容易得多。
存储过程可包含程序流、逻辑以及对数据库的查询。
它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:可以在单个存储过程中执行一系列SQL语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,且能减少网络通信的负担。
10.2创建存储过程要使用存储过程,首先要创建一个存储过程。
可以使用Transact-SQL 语言的CREATE PROCEDURE语句,也可以使用企业管理器或者存储过程创建向导来完成。
1.使用CREATE PROCEDURE语句创建存储过程CREATE PROCEDURE语句的语法格式为:CREATE PROC[EDURE ] procedure_name [; number][ {@parameter data_type}[VARYING ][ = default][OUTPUT]][,…n][WITH{RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}][FOR REPLICATION]AS sql_statement […n ]其中各参数含义如下:procedure_name新存储过程的名称。
number 是可选的整数,用来对同名的过程分组,以便用一条DROP PROCEDURE语句即可将同组的过程一起除去。
例如,名为orders的应用程序使用的过程可以命名为orderproc;1、orderproc;2等。
DROP PROCEDURE orderproc语句将除去整个组。
如果名称中包含定界标识符,则数字不应包含在标识符中,只应在“procedure_name”前后使用适当的定界符。
@parameter 过程中的参数。
在CREATE PROCEDURE语句中可以声明一个或多个参数。
用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。
存储过程最多可以有2100个参数。
data_type 参数的数据类型。
所有数据类型(包括text、ntext和image)均可以用作存储过程的参数。
不过,cursor数据类型只能用于OUTPUT参数。
如果指定的数据类型为cursor,也必须同时指定VARYING和OUTPUT关键字。
VARYING 指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。
仅适用于游标参数。
default 参数的默认值。
如果定义了默认值,不必指定该参数的值即可执行过程。
默认值必须是常量或NULL。
OUTPUT 表明参数是返回参数。
该选项的值可以返回给EXE[UTE]。
使用OUTPUT参数可将信息返回给调用过程。
{RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION} RECOMPILE表明SQL Server不会缓存该过程的计划,该过程将在运行时重新编译。
ENCRYPTION表示SQL Server加密syscomments表中包含CREATE PROCEDURE语句文本的条目。
FOR REPLICATION 指定不能在订阅服务器上执行为复制创建的存储过程。
sql_statement 过程中要包含的任意数目和类型的Transact-SQL语句。
但有一些限制。
【例10.1】下面创建一个简单的存储过程stud_degree ,用于检索所有学生的成绩记录:USE school--判断stud_degree存储过程是否存在,若存在,则删除IF EXISTS (SELECT name FROM sysobjectsWHERE name = 'stud_degree' AND type ='P')DROP PROCEDURE stud_degreeGOUSE schoolGO--创建存储过程stud_degreeCREATE PROCEDURE stud_degreeASSELECT student.sno,student.sname,ame,score.degreeFROM student,course,scoreWHERE student.sno=score.sno AND o=oORDER BY student.snoGO通过下述SQL语句执行该存储过程:USE school--判断stud_degree存储过程是否存在,若存在,则执行它IF EXISTS (SELECT name FROM sysobjectsWHERE name = 'stud_degree' AND type ='P')EXEC stud_degree /*执行存储过程stud_degree*/GO执行结果为:sno sname cname degree----- -------- ------------- --------------------101 李军计算机导论 64101 李军数字电路 85103 陆君计算机导论 92103 陆君操作系统 86105 匡明计算机导论 88105 匡明操作系统 75107 王丽计算机导论 91107 王丽数字电路 79108 曾华计算机导论 78108 曾华数字电路 81109 王芳计算机导论 76109 王芳操作系统 68创建存储过程时应该注意下面几点:存储过程的最大大小为128MB。
用户定义的存储过程只能在当前数据库中创建(临时过程除外,临时过程总是在tempdb中创建)。
在单个批处理中,CREATE PROCEDURE语句不能与其他Transact-SQL语句组合使用。
存储过程可以嵌套使用,在一个存储过程中可以调用其他的存储过程。
嵌套的最大深度不能超过32层。
存储过程如果创建了临时表,则该临时表只能用于该存储过程,而且当存储过程执行完毕后,临时表自动被删除。
创建存储过程时,“sq_statement”不能包含下面的Transact-SQL语句:SET SHOWPLAN_TEXT、SETSHOWMAN_ALL、CREATE VIEW、CREATE DEFAULT、CREATE RULE、CREATE PROCEDURE和CREATETRIGGER。
SQL Server允许创建的存储过程引用尚不存在的对象。
在创建时,只进行语法检查。
执行时,如果高速缓存中尚无有效的计划,则编译存储过程以生成执行计划。
只有在编译过程中才解析存储过程中引用的所有对象。
因此,如果语法正确的存储过程引用了不存在的对象,则仍可以成功创建;但在运行时将失败,因为所引用的对象不存在。
2.使用企业管理器创建存储过程使用企业管理器创建存储过程的操作步骤如下:(1) 打开企业管理器,展开服务器组,并展开相应的服务器。
(2) 打开“数据库”文件夹,并打开要创建存储过程的数据库。
(3) 选择“存储过程”选项,右击鼠标,执行“新建存储过程”命令,打开创建存储过程对话框,如图10.1所示。
图10.1创建存储过程(4) 在“文本”列表框中显示了CREATE PROCEDURE语句的框架,可以修改要创建的存储过程的名称,然后加入存储过程所包含的SQL语句。
(5) 单击“检查语法”按钮可以检查创建存储过程的SQL语句的语法是否正确。
(6) 如果要将其设置为下次创建存储过程的模板,可单击“另存为模板”按钮。
(7) 完成后,单击“确定”按钮即可创建一个存储过程。
3.使用向导创建SQL Server 2000还提供了创建存储过程的向导.【例10.2】 使用向导创建一个存储过程insert_table8_1,对应的操作步骤如下:(1) 在企业管理器中,执行“工具”下拉菜单中的“向导”命令,打开“选择向导”对话框,如图10.2所示。
(2) 在“数据库”文件夹选择“创建存储过程”向导,单击“确定”按钮,出现创建存储过程向导欢迎对话框。
(3) 单击“下一步”按钮,出现选择数据库对话框,如图10.3所示。
(4) 选择数据库后,单击“下一步”按钮,出现选择存储过程对话框,如图10.4所示。
图10.2 “选择向导”对话框图10.3选择数据库图10.4 选择存储过程在此对话框中,列出了所有表,以及可以对表进行的插入、删除和更新操作。
可以通过选中每个表对应的复选框来确定要对表进行的操作。
例如,选择table8表后面的“插入”栏中的复选框。
(5) 单击“下一步”按钮,出现完成创建存储过程对话框,如图10.5所示。
若单击“完成”按钮,即可完成存储过程的创建。
(6) 单击“编辑”按钮,可编辑存储过程,如图10.6所示。
图10.5 完成创建存储过程图10.6 编辑存储过程(7) 单击“编辑SQL”按钮,即可打开“编辑存储过程SQL”对话框,其中的列表框显示了创建该存储过程的Transact-SQL语句,如图10.7所示。
可以在已有的Transact-SQL语句的基础上进行编辑,可以单击“分析”按钮来执行语法检查。
(8) 单击“确定”按钮,返回到图10.5所示的对话框。
图10.7 “编辑存储过程SQL”对话框10.3执行存储过程执行存储过程使用EXECUTE语句,其完整语法格式如下:[ [ EXEC[UTE] ][ @return_status = ]{ procedure_name [ ;number ] | @procedure_name_var } [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ][ ,…n ][ WITH RECOMPILE ]各参数含义如下:@return_status 是一个可选的整型变量,保存存储过程的返回状态。
这个变量在用于EXECUTE 语句前,必须在批处理、存储过程或函数中声明过。
procedure_name 是调用的存储过程的名称。
过程名称必须符合标识符规则。
无论服务器的代码页或排序方式如何,扩展存储过程的名称总是区分大小写。
;number 是可选的整数,用于将相同名称的过程进行组合,使得它们可以用一句 DROP PROCEDURE 语句除去。
该参数不能用于扩展存储过程。
@procedure_name_var 是局部定义变量名,代表存储过程名称。