`
tjmzgn
  • 浏览: 159726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库---存储过程总结

阅读更多
定义:
          将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,   那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
        讲到这里,可能有人要问:这么说存储过程就是一堆SQL语句而已啊?
          Microsoft公司为什么还要添加这个技术呢?
        那么存储过程与一般的SQL语句有什么区别呢?
        存储过程的优点:
          1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
          2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
          3.存储过程可以重复使用,可减少数据库开发人员的工作量
          4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
        存储过程的种类:
          1.系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,
          如   sp_help就是取得指定对象的相关信息
          2.扩展存储过程   以XP_开头,用来调用操作系统提供的功能
          exec   master..xp_cmdshell   'ping   10.8.16.1'
          3.用户自定义的存储过程,这是我们所指的存储过程
          常用格式
          Create   procedure   procedue_name
          [@parameter   data_type][output]
          [with]{recompile|encryption}
          as
          sql_statement
        解释:  
        output:表示此参数是可传回的
        with   {recompile|encryption}
        recompile:表示每次执行此存储过程时都重新编译一次
        encryption:所创建的存储过程的内容会被加密
        如:
          表book的内容如下
          编号   书名   价格
          001   C语言入门   $30
          002   PowerBuilder报表开发   $52
          实例1:查询表Book的内容的存储过程
          create   proc   query_book
          as  
          select   *   from   book
          go
          exec   query_book
          实例2:加入一笔记录到表book,并查询此表中所有书籍的总金额
          Create   proc   insert_book
          @param1   char(10),@param2   varchar(20),@param3   money,@param4   money   output
          with   encryption   ---------加密
          as
          insert   book(编号,书名,价格)   Values(@param1,@param2,@param3)
          select   @param4=sum(价格)   from   book
          go
          执行例子:  
          declare   @total_price   money  
          exec   insert_book   '003','Delphi   控件开发指南',$100,@total_price
          print   '总金额为'+convert(varchar,@total_price)
          go
        存储过程的3种传回值:
          1.以Return传回整数
          2.以output格式传回参数
          3.Recordset
        传回值的区别:
          output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中  
        实例3:设有两个表为Product,Order,其表内容如下:
          Product
          产品编号   产品名称   客户订数  
          001   钢笔   30  
          002   毛笔   50  
          003   铅笔   100  
          Order  
          产品编号   客户名   客户订金
          001   南山区   $30
          002   罗湖区   $50
          003   宝安区   $4
        请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额,
        总金额=订金*订数,临时表放在存储过程中
        代码如下:
          Create   proc   temp_sale
          as
          select   a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数*   b.客户订金   as总金额
          into   #temptable   from   Product   a   inner   join   Order   b   on   a.产品编号=b.产品编号
          if   @@error=0  
          print   'Good'
          else
        &n bsp; print   'Fail'
          go
存储过程介绍  
一、先介绍一下什么是存储过程  
存储过程是利用SQL   Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL   Server提供专为设计数据库应用程序的语言,它是应用程序和SQL   Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:  
1)、变量说明  
2)、ANSI兼容的SQL命令(如Select,Update….)  
3)、一般流程控制命令(if…else…、while….)  
4)、内部函数  

二、存储过程的书写格  

CREATE   PROCEDURE   [拥有者.]存储过程名[;程序编号]  
[(参数#1,…参数#1024)]  
[WITH  
{RECOMPILE   |   ENCRYPTION   |   RECOMPILE,   ENCRYPTION}  
]  
[FOR   REPLICATION]  
AS   程序行  

其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数  
(SQL   Server   7.0以上版本),参数的使用方法如下:  

@参数名   数据类型   [VARYING]   [=内定值]   [OUTPUT]  

每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL   Server所支持的数据类型都可使用。  
[=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。  

例子:  
CREATE   PROCEDURE   order_tot_amt   @o_id   int,@p_tot   int   output   AS  
SELECT   @p_tot   =   sum(Unitprice*Quantity)  
FROM   orderdetails  
WHERE   ordered=@o_id  

例子说明:  
该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表(orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序  

三、在SQL   Server中执行存储过程  

在SQL   Server的查询分析器中,输入以下代码:  
declare   @tot_amt   int  
execute   order_tot_amt   1,@tot_amt   output  
select   @tot_amt  

以上代码是执行order_tot_amt这一存储过程,以计算出定单编号为1的定单销售金额,我们定义@tot_amt为输出参数,用来承接我们所要的结果 
分享到:
评论

相关推荐

    数据库--仪器仪表管理系统

    - **目标**:确保数据库能够有效地存储和管理数据,满足用户的信息管理和数据操作需求。 - **阶段**: - **需求分析**:明确用户需求,了解系统需要解决的问题。 - **概念结构设计**:建立数据的概念模型。 - **...

    阿里巴巴-数据库-标准操作手册

    - **数据库**:存储、管理和检索数据的系统。 - **标准**:一套规定或准则,用于确保一致性、可靠性和效率。 - **操作手册**:详细说明如何执行特定任务的文档。 - **规范**:规定行为、过程或实践的规则或标准。 - ...

    JAVA数据库-数据库集合

    - **CallableStatement**:用于调用数据库中的存储过程。 - **ResultSet**:表示执行查询后返回的结果集。提供了遍历数据的方法,如`next()`、`getString()`、`getInt()`等。 #### 异常处理 - **SQLException**:...

    数据库实验报告-存储过程、触发器

    存储过程是数据库中一组预编译的SQL语句,它可以接收参数,执行特定任务,并返回结果。其优点包括: 1. 提高性能:存储过程在首次编译后,会缓存执行计划,多次调用时无需再次解析,从而提高执行速度。 2. 减少网络...

    SQL2008数据库-备份与还原.doc

    #### 四、处理数据库还原过程中的常见问题 - **问题描述:** 在还原数据库时可能会遇到“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误消息。 - **解决方案:** 1. **设置数据库为单用户模式:**...

    数据库-豆瓣读书数据库反向设计-学习

    5. **PPT汇报**:“数据库汇报.pptx”可能是项目组对整个数据库设计和实施的总结汇报,通常会包含项目目标、设计思路、关键技术点、实施结果和未来改进方向等内容。通过PPT,我们可以了解到项目的整体框架和重点。 ...

    数据库-学生管理系统实验报告.docx

    - 实现了需求分析、设计、编程和测试的全过程,加深了对E-R图和数据库实体的理解。 这个实验项目不仅锻炼了学生的编程技能,也提升了他们的系统设计能力,特别是在数据库管理和用户权限控制方面。尽管系统可能存在...

    Oracle-9i培训胶片中文版-0-2建数据库-dbca-caith.ppt

    1. DBCA(Database Configuration Assistant)是Oracle提供的图形化工具,用于简化数据库的创建、配置和删除过程。通过DBCA,用户可以定制数据库的各个选项,例如数据库类型、存储参数、安全设置等。它还允许用户...

    nacos2.1.0版本-达梦数据库-linux

    下面将详细介绍Nacos的核心特性、安装过程、与达梦数据库的连接配置以及在Linux上的操作。 1. **Nacos核心特性** - **服务发现**:Nacos作为服务注册与发现的平台,允许微服务之间互相发现和通信,支持Spring ...

    数据库设计全过程--数据库设计全过程

    ### 数据库设计全过程详解 #### 一、引言 随着信息技术的发展,数据库设计成为现代信息系统构建的核心环节之一。良好的数据库设计不仅能够确保数据的有效管理和利用,还能提高系统的整体性能和可扩展性。本文将...

    sql server数据库-备份、压缩、清空日志语句

    恢复数据库是备份过程的逆向操作,用于将备份的数据还原到数据库中,以便于数据恢复或迁移。 ```sql RESTORE DATABASE [数据库名] FROM DISK = N'[备份文件路径]' WITH RECOVERY ``` - `[数据库名]`:需要恢复的...

    VMware 部署 Oracle 数据库 - 最佳实践指南

    文档中的示例与考虑因素虽不具备强制性设计要求,但仍可作为部署过程中的参考。 #### 二、vSphere概述 - **vSphere**:VMware提供的企业级虚拟化平台,支持多种操作系统和应用环境。 - **特点**: - 提供高级资源...

    数据库-教材购销管理系统(1).doc

    【数据库-教材购销管理系统】是一个为高校设计的...这个教材购销管理系统涵盖了数据库设计的全过程,从需求分析到系统实施,再到运行测试,充分展示了数据库在实际业务中的应用,对提升学校教材管理效率有显著作用。

    数据库-第六章 数据库设计.doc

    总结来说,数据库设计是构建高效、可靠数据库应用系统的核心,涉及多方面的技术和知识,包括数据库理论、软件工程原则、领域专业知识等。通过严谨的需求分析和一系列设计步骤,确保数据库能够满足用户当前及未来的...

    数据库的存储过程

    总结,存储过程是数据库管理中的重要工具,它通过封装复杂的SQL操作和业务逻辑,提高了代码的可维护性和性能。理解并熟练运用存储过程,对于数据库设计和开发人员来说至关重要。通过不断实践和学习,我们可以更好地...

    数据库方面存储过程教程

    ### 数据库方面存储过程教程 #### 一、存储过程与触发器的概念及作用 在现代数据库管理系统中,存储过程和触发器是两个重要的概念。它们不仅能够提高数据处理的效率,还能增强系统的安全性与可靠性。 **存储过程*...

    Oracle-9i培训胶片中文版-0-2.建数据库-dbca-caith.ppt

    Oracle 9i 是一款历史...总结来说,这个培训胶片详细介绍了使用DBCA和手动方式创建Oracle 9i数据库的全过程,涵盖了从环境配置到数据库参数设定的多个方面,对于理解Oracle数据库的初始化和管理具有重要的参考价值。

Global site tag (gtag.js) - Google Analytics