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

存储过程懂不懂

 
阅读更多

存储过程的官方定义是这么说的:

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。


其实说的再简单一点,她就是一个过程而已,对!就是和你所熟知的那个Sub……End Sub实质上是一个东西。

存储过程除了与一般的过程拥有同样的优点外(多次调用,可移植性好等),还在一定程度上减少了网络流量(只需要传送调用过程的语句);而且通过对执行存储过程的权限控制还能保证系统数据的安全等等,等等。

简而言之,使用存储过程存在很多好处,但是却没有明显的坏处。

OK!铺垫完毕,开始正式介绍——存储过程。(这里应该有掌声)

l 基本语法格式

n 创建存储过程

   1: create proc 过程名/*建立存储过程*/
<!--CRLF-->
   2: @parameter 参数类型  /*输入参数*/
<!--CRLF-->
   3: ...
<!--CRLF-->
   4: @parameter 参数类型  output/*输出参数*/
<!--CRLF-->
   5: ...
<!--CRLF-->
   6: as
<!--CRLF-->
   7: begin
<!--CRLF-->
   8:     命令行或命令块/*需要存储过程执行的操作*/
<!--CRLF-->
   9: end
<!--CRLF-->

n 执行存储过程

   1: execute 过程名 [参数,参数……][output] 
<!--CRLF-->

n 修改存储过程

   1: alter proc 过程名*/修改存储过程*/
<!--CRLF-->
   2: @parameter 参数类型  /*输入参数*/
<!--CRLF-->
   3: ...
<!--CRLF-->
   4: @parameter 参数类型  ouput/*输出参数*/
<!--CRLF-->
   5: ...
<!--CRLF-->
   6: as
<!--CRLF-->
   7: begin
<!--CRLF-->
   8:    命令行货命令块/*存储过程执行的操作*/
<!--CRLF-->
   9: End
<!--CRLF-->

n 重命名存储过程

   1: sp_rename 原过程名,新过程名
<!--CRLF-->

n 删除存储过程

   1: drop proc存储过程名,[存储过程名2,……]
<!--CRLF-->

l 存储过程在哪里?

无论是系统自带的存储过程(在数据库master中,以sp_开头)还是自定义的存储过程,都在相应数据库中的“可编译性”——“存储过程”中,可以点击查看。

PS:修改、重命名、删除存储过程也可以在相应数据库中的“可编译性”——“存储过程”中右键进行相应相关操作(看个人喜好)。

l 实战演练

1. 建立数据库(略)

文章末尾附数据对应脚本,执行即可。image

2. 建立无参数存储过程

   1: create proc proc1
<!--CRLF-->
   2: as 
<!--CRLF-->
   3: begin
<!--CRLF-->
   4:    select a.StuNo,StuName,StuCollege,StuScore from Student a
<!--CRLF-->
   5:    where StuScore >90
<!--CRLF-->
   6: end
<!--CRLF-->

3. 建立有参数存储过程

   1: CREATE proc proc2
<!--CRLF-->
   2: @coures varchar(20)
<!--CRLF-->
   3: as 
<!--CRLF-->
   4: begin
<!--CRLF-->
   5:    select StuNo,StuName,StuCollege,StuScore from Student a
<!--CRLF-->
   6:    where StuScore=@Coures
<!--CRLF-->
   7: end
<!--CRLF-->

4. 执行存储过程

   1: execute proc1
<!--CRLF-->
   2: execute proc2 '80'
<!--CRLF-->

如图所示image

附:对应数据脚本

   1: USE [StuInfo]
<!--CRLF-->
   2: GO
<!--CRLF-->
   3: SET ANSI_NULLS ON
<!--CRLF-->
   4: GO
<!--CRLF-->
   5: SET QUOTED_IDENTIFIER ON
<!--CRLF-->
   6: GO
<!--CRLF-->
   7: SET ANSI_PADDING ON
<!--CRLF-->
   8: GO
<!--CRLF-->
   9: CREATE TABLE [dbo].[Student](
<!--CRLF-->
  10:        [StuNo] [varchar](50) NULL,
<!--CRLF-->
  11:        [StuName] [varchar](50) NULL,
<!--CRLF-->
  12:        [StuCollege] [varchar](50) NULL,
<!--CRLF-->
  13:        [StuScore] [varchar](50) NULL
<!--CRLF-->
  14: ) ON [PRIMARY]
<!--CRLF-->
  15: GO
<!--CRLF-->
  16: SET ANSI_PADDING OFF
<!--CRLF-->
  17: GO
<!--CRLF-->
  18: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'1', N'丁福东', N'物电学院', N'80')
<!--CRLF-->
  19: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'2', N'斯蒂芬', N'物电学院', N'75')
<!--CRLF-->
  20: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'3', N'梵蒂冈', N'数信学院', N'98')
<!--CRLF-->
  21: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'4', N'金凯华', N'国贸学院', N'69')
<!--CRLF-->
  22: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'5', N'安淑霞', N'数信学院', N'78')
<!--CRLF-->
  23: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'6', N'张成栋', N'生科学院', N'84')
<!--CRLF-->
  24: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'7', N'安世伟', N'国贸学院', N'95')
<!--CRLF-->
  25: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'8', N'任文才', N'生科学院', N'71')
<!--CRLF-->
  26: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'9', N'秦福德', N'物电学院', N'54')
<!--CRLF-->
  27: INSERT [dbo].[Student] ([StuNo], [StuName], [StuCollege], [StuScore]) VALUES (N'10', N'孙德荣', N'生科学院', N'68')
<!--CRLF-->
分享到:
评论

相关推荐

    比较简单的存储过程 简单易懂

    标题与描述中的知识点聚焦于“比较简单的存储过程”,旨在为初学者提供易于理解的存储过程教程。以下将详细解析此存储过程的关键概念、设计思路及其在SQL Server 2000环境下的具体实现。 ### 存储过程简介 存储...

    oracle存储过程

    存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创建存储...

    jave调用anywhere存储过程

    当你需要在Java应用程序中调用Anyware存储过程时,这是一个常见的任务,特别是在分布式系统或者需要与数据库进行交互的应用中。下面将详细解释如何在MyEclipse开发环境中,利用Java来调用Anywhere 9的存储过程。 ...

    SQL Server 2000 存储过程与XML编程1

    如果你不懂存储过程,你看这个,如果你想深究存储过程,看这个。你下载了给我发邮件:我给你实例数据库,也就是书里面的所有的例程和其他的!sunwu5212@126.com 。用超星阅读,文件很大!分两部分上传!这是第一部分...

    数据库存储过程的学习资料

    Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回...

    oracle使用dblink高速复制表数据的动态存储过程

    本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。 具体请参阅程序,可根据自已需要进行修改。 参数说明: CREATE OR REPLACE PROCEDURE ...

    SQL Server 2000 存储过程与XML编程2.rar

    如果你不懂存储过程,你看这个,如果你想深究存储过程,看这个。你下载了给我发邮件:我给你实例数据库,也就是书里面的所有的例程和其他的!sunwu5212@126.com 。用超星阅读,文件很大!分两部分,此为第二部分!

    java调用oracle存储过程并得到结果集

    在Java编程中,调用Oracle数据库的存储过程并获取结果集是一项常见的任务。在这个场景下,我们将使用JDK 1.5版本,MyEclipse集成开发环境,以及Oracle 11g数据库。以下是对这个主题的详细解释: 首先,我们需要确保...

    基于 python+TuShare数据存储方法及数据分析过程

    【作品名称】:基于 python+TuShare数据存储方法及数据分析过程 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: ...

    让不懂编程的人爱上iPhone开发(iOS7秋季版)

    《让不懂编程的人爱上iPhone开发(iOS7秋季版)》是一本面向初学者的教程,旨在帮助那些对编程一无所知的读者踏入iOS应用开发的世界。iOS平台,特别是苹果的iPhone设备,一直以来都是开发者们热衷的领域,因为它拥有...

    不懂技术产品经理

    ### 不懂技术的产品经理:如何与程序员高效协作 在当今快速发展的互联网行业中,产品经理(Product Manager,简称PM)的角色越来越重要。他们不仅需要对市场趋势、用户需求有着敏锐的洞察力,还需要具备一定的技术...

    一图看懂FC存储网络架构.docx

    在存储网络中,双控制器配置可以确保即使一个控制器出现故障,主机仍然可以通过另一个控制器访问LUN,实现不间断的数据访问。 具体到FC网络的工作流程,当服务器需要访问数据时,会通过FC接口向FC交换机发送I/O请求...

    Oracle+DataX+存储过程实现异构库之间的数据同步

    最后,"Oracle存储过程执行shell脚本"意味着在Oracle数据库内部,我们可以创建存储过程来调用这些shell脚本。存储过程是一组预先编译的SQL语句,可以接受参数,返回结果,甚至执行系统命令。通过存储过程,可以在...

    分页存储过程

    分页存储过 比较简单些 如果有人看不懂就可以来问

    关于Mybatis 中使用Mysql存储过程的方法

    2. 如果写此存储过程的人离职了,对于接手她代码的人估计是一场灾难,因为别人还要去读懂你程序逻辑,还要读懂你存储逻辑。不利于扩展。 3. 最大的缺点!虽然存储过程可以减少代码量,提高开发效率。但是有一点非常...

    让不懂编程的人爱上iphone开发

    《让不懂编程的人爱上iPhone开发》是一套专为编程初学者设计的iOS 7开发教程。这个系列教程旨在帮助那些对编程和iPhone应用开发感兴趣,但又缺乏相关基础的读者快速入门。通过深入浅出的讲解,使得学习过程充满乐趣...

    Python-对懂球帝的文章进行有条件爬取

    6. **数据库设计**:在远程MySQL数据库中,你需要设计一个适合存储懂球帝文章信息的表结构,可能包括文章ID、标题、作者、发布日期、内容、评论数等字段,确保数据的完整性和一致性。 7. **异常处理**:在编写爬虫...

    你不懂JS:异步与性能.pdf

    《你不懂JS:异步与性能》这本书深入探讨了这两个关键主题,旨在帮助开发者提升JavaScript技能,创建高效、响应迅速的应用。 异步编程是JavaScript中的一个核心概念,它允许代码在不阻塞主线程的情况下执行任务,...

    电子书籍-不懂心理学就成不了销售精英.docx

    【电子书籍-不懂心理学就成不了销售精英】 在销售领域,成功往往不仅仅是依赖于技术和专业知识,更多的是基于销售人员的心理素质和心态。本电子书籍探讨了如何通过提升个人的心理素质,成为销售行业的佼佼者。 ...

    凤凰2021刷机软件-傻瓜式超级详细图文教程-不懂英文也会刷分享.pdf

    本文将根据《凤凰2021刷机软件-傻瓜式超级详细图文教程-不懂英文也会刷分享.pdf》的指引,为不熟悉英文的用户详细介绍诺基亚手机刷机全过程。 ### 刷机前的准备工作 刷机有风险,操作需谨慎。在开始刷机之前,最...

Global site tag (gtag.js) - Google Analytics