您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第8章 存储过程的应用
第8章存储过程的应用技能目标理解存储过程的作用;学会创建、删除、修改存储过程;学会根据实际需要设计销售管理数据库中的存储过程。知识目标理解存储过程的作用;了解系统存储过程和扩展存储过程;掌握存储过程的基本类型;掌握创建、删除、修改和加密存储过程;掌握执行各类存储过程存储过程的概念存储过程(StoredProcedure)是一组完成特定功能的Transact-SQL语句集,经编译后存储在数据库中,用户调用过程名和给出参数来调用它们存储过程的特点允许模块化程序设计执行速度快有效降低网络流量提高数据库的安全性存储过程的分类系统存储过程用户自定义存储过程扩展存储过程存储过程的分类(续)系统存储过程存储过程的分类(续)用户自定义存储过程用户自定义存储过程是指封装的由用户创建,能完成某一特定的功能的可重用代码的模块或例程。扩展存储过程扩展存储过程是指使用编程语言(例如C)创建自己的外部例程,是指MicrosoftSQLServer的实例可以动态加载和运行的DLL。存储过程语法格式语法格式:CREATE[PROC|PROCEDURE]存储过程名[{@参数名称参数数据类型}[=参数的默认值][OUTPUT]][,...n][WITHENCRYPTION][WITHRECOMPILE]ASsql_statement参数:@参数名称:存储过程可以没有参数。也可以声明一个或多个参数,参数名称必须@作为第一个字符。参数后面带OUTPUT,表示为输出参数。WITHENCRYPTION:对存储过程加密,其他用户无法查看存储过程的定义。WITHRECOMPILE:每次执行该存储过程都重新进行编译。sql_statemen:该存储过程中定义的编程语句。存储过程的组成存储过程的定义中包含如下的两个主要组成部分。(1)过程名称及其参数的说明:包括所有的输入参数以及传给调用者的输出参数。(2)过程的主体:也称为过程体,针对数据库的操作语句(Transact-SQL语句),包括调用其它存储过程的语句。不带参数的存储过程1、创建不带参数的存储过程语法格式。CREATE[PROC|PROCEDURE]存储过程名[WITHENCRYPTION][WITHRECOMPILE]ASsql_statement【例】创建一个名为Cu_information的存储过程,用于查询客户的信息。【例】创建一个名为Cu_tonghen_Order存储过程,用于查询“通恒机械有限公司”的联系人姓名、联系方式、以及该公司订购产品的明细表。不带参数的存储过程(续)执行不带参数的存储过程语法结构如下。EXEC[UTE]存储过程名【例9】执行创建的Cu_tonghen_Order存储过程。EXECCu_tonghen_Order带输入参数的存储过程创建带输入参数的存储过程CREATE[PROC|PROCEDURE]存储过程名[{@参数名称参数数据类型}[=参数的默认值][,...n][WITHENCRYPTION][WITHRECOMPILE]ASsql_statement【例】创建一个存储过程,实现根据订单号获取该订单的信息的功能。带输入参数的存储过程(续)执行输入参数的存储过程两种方法:(1)使用参数名传递参数值执行的语法结构如下。EXEC存储过程名[@参数名=参数值][DEFAULT][,…n](2)按位置传递参数值EXEC存储过程名[参数值1,参数值2,…]带输出参数的存储过程1、创建带输出参数的存储过程语法如下。@参数名数据类型[=默认值]OUTPUT2、执行带输出参数的存储过程语法如下。EXEC[UTE]存储过程名[[@参数名=]{参数值|@变量[OUTPUT]|[默认值]}][,...n]查看存储过程(1)sp_help用于显示存储过程的参数及其数据类型。语法格式如下。sp_help[[@objname=]存储过程名](2)sp_helptext用于显示存储过程的源代码。语法格式如下。sp_helptext[[@objname=]存储过程]【例8.1】创建一个名为Cu_information的存储过程,用于查询客户的信息。代码如下:CREATEPROCEDURECu_information/*定义过程名*/ASSELECT*FROMcustomer/*过程体*/SQLServer2005数据库应用技术清华大学出版社【例8.2】创建一个名为Cu_tonghen_Order存储过程,用于查询“通恒机械有限公司”的联系人姓名、联系方式、以及该公司订购产品的明细表。代码如下:CREATEPROCEDURECu_tonghen_OrderAsSELECTC.CompanyName公司名称,c.con,P.productName商品名称,P.price单价,S.sellOrderNumber订购数量,S.sellOrderDate订货日期FROMcustomerASCJOINSell_orderASSONC.customerID=S.customerIDJOINproductASPONP.productID=S.productIDwhereC.CompanyName='通恒机械有限公司'【例8.3】执行【例8.2】中创建的Cu_tonghen_Order存储过程。代码如下:EXECCu_tonghen_Order【例8.4】创建一个存储过程,实现根据订单号获取该订单的信息的功能。代码如下:CreatePROCEDUREOrderDetail@OrderIDINTASSELECT*FROMSell_OrderWHERESellOrderId=@OrderID【例8.5】在销售管理数据库CompanySales中,创建一个名customer_order存储过程,用于获取指定客户的信息,包括联系人姓名、联系方式以及该公司订购产品的明细表。代码如下:CREATEPROCEDUREcustomer_order@customernamevarchar(20)ASSELECTc.CompanyName公司名称,C.contactName联系人姓名,P.productName商品名称,P.Price单价,S.sellOrderNumber数量,S.SellOrderDATE订货日期FROMcustomerASCJOINSell_orderASSONC.customerID=S.customerIDJOINproductASPONS.productID=P.productIDWHEREc.CompanyName=@customername【例8.6】创建名为listEmployee的存储过程,其功能为:在员工表employee中查找符合性别和超过指定工资条件的员工详细信息。代码如下:CREATEPROCEDURElistEmployee@sexvarchar(2),@salarymoneyASSELECT*FROMemployeeWHEREsex=@sexandsalary@salary查找工资超过4000元的的男员工和工资超过3000元女员工的详细信息。代码如下:EXEClistEmployee@sex='男',@salary=4000EXEClistEmployee@salary=3500,@sex='女'删除用户存储过程删除用户存储过程可以使用DROP命令。语法格式如下。DROP{PROC|PROCEDURE}存储过程名[,...n]修改存储过程ALTERPROCEDURE语句的语法格式如下。ALTER[PROC|PROCEDURE]存储过程名[{@参数名称参数数据类型}[=参数的默认值][OUTPUT]][,...n][WITHENCRYPTION][WITHRECOMPILE]ASsql_statement系统存储过程常用系统存储过程:sp_tables:返回可在当前环境中查询的对象列表。这代表可在FROM子句中出现的任何对象。sp_stored_procedures:返回当前环境中的存储过程列表。sp_rename:在当前数据库中更改用户创建对象的名称。此对象可以是表、索引、列、别名数据类型。sp_renamedb:更改数据库的名称。sp_help:报告有关数据库对象(sys.sysobjects兼容视图中列出的所有对象)、用户定义数据类型或SQLServer2005提供的数据类型的信息。sp_helptext:示用户定义规则的定义、默认值、未加密的Transact-SQL存储过程、用户定义Transact-SQL函数、触发器、计算列、CHECK约束、视图或系统对象(如系统存储过程)。sp_who:提供有关MicrosoftSQLServerDatabaseEngine实例中的当前用户和进程的信息。sp_password:为MicrosoftSQLServer登录名添加或更改密码。创建存储过程需要考虑的因素:(1)一个存储过程完成一个任务。(2)不要使用sp_来命名用户存储过程。(3)可以使用WITHENCRYPTION加密存储过程,以免存储过程的源代码被人查阅。(4)在存储过程的开始执行SET语句。(5)在服务器上创建、测试存储过程。
本文标题:第8章 存储过程的应用
链接地址:https://www.777doc.com/doc-3967003 .html