数据库存储过程总结

转载 2018年02月04日 14:08:44

存储过程
1:创建存储过程

create proc stu_proc1
as select count(*) from student
exec stu_proc1 执行

2:修改、删除、重命名

alter proc stu_proc1
as select * from student

drop proc stu_proc1
as select * from student

rename proc stu_proc1
as select * from student

3:参数存储过程
传入参数:

create proc stu_proc3
@pname char(3)
as select * from student where number=@pname
exec stu_proc3/'103/'

传出参数

create proc stu_proc5
@pname
@result char(8) output
as select @result=name from student where number=@pname
declare @a char(8)
exec stu_proc5 /'103/',@a output
print @a//select @a

亦可命名参数、明确指定

delcare @a char(8)
exec stu_proc5 @result=@a output,@pname=/'103/'
print @a

4:存储过程的复杂操作

使用带有复杂select语句的简单过程
下面的存储过程从两个表的联接中返回所有学生(提供了姓名)、所学课程。
该存储过程不使用任何参数。

use students
if exists(select name from sysobjects where name='/info_all/' and type=/'P/')
  drop procedure info_all
go 
create procedure info_all
as 
select stu.name,grade.course
from stu inner join grade on stu.number=grade.number
go

info_all存储过程可以通过以下方法执行:
execute info_all 或者 exec info_all

下面的存储过程从四个表的联接中返回所有作者(提供了姓名)出版的书籍以及出版社,该存储过程不使用任何参数

use upbs
if exists(select name from sysobjects
      WHERE name = /'au_info_all/' AND type = /'P/')
   DROP PROCEDURE au_info_all
GO
CREATE PROCEDURE au_info_all
AS
SELECT au_lname, au_fname, title, pub_name
   FROM authors a INNER JOIN titleauthor ta
      ON a.au_id = ta.au_id INNER JOIN titles t
      ON t.title_id = ta.title_id INNER JOIN publishers p
      ON t.pub_id = p.pub_id
GO

练习1:制作存储过程显示所有年龄大于26的学生

create proc age1
as
select name from student
where year(getdate())-year(birthday)>26
exec age1

练习2:制作存储过程显示所有年龄大于指定大小的学生

create proc age2
@pdata int
as
select name from student
where year(getdate())-year(birthday)>@pdata
exec age2 26

存储过程的注意事项:可使用with recompile 和with encryption

两者都可放在参数之后,语句之前,其中with recompile会导致每次调用存储过程都会编译,效率变低,但执行效率可能优化,或加入到exec age with recompile中,则会根据需要创造新的查询计划多行储存过程。

create proc temp 
as 
select * from stu
select * from grade

转自博客:http://blog.csdn.net/jianxiong8814/article/details/2199380

数据库课程设计心得【3】---存储过程的运用

TextBox4.Text = Calendar1.SelectedDate.ToString(); decimal iRet; //获取连接数据库的...
  • duqi_2009
  • duqi_2009
  • 2010年12月19日 14:58
  • 1476

MySQL数据库总结(13)存储过程与函数

存储过程procedure 查看现有的存储过程 删除存储过程 调用存储过程 在mysql中存储过程和函数的区别 存储过程:procedure 概念类似于函数,就是把一段代码封装起来, 当要执...
  • sinat_29912455
  • sinat_29912455
  • 2016年03月22日 11:27
  • 1483

存储过程学习总结

SQLSERVER存储过程使用说明书   引言 首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还...
  • zhoujn90
  • zhoujn90
  • 2013年08月27日 20:37
  • 3409

Caché数据库工作中总结

XECUTE动态执行表达式 例子1 动态的打印一句话 XECUTE ("WRITE ""hello world"",!") 例子二: 执行1>3表达式获取结果  (data) s data ...
  • xx244488877
  • xx244488877
  • 2014年11月27日 16:03
  • 665

再看数据库——(1)存储过程

当我们执行一个比较简单的操作时,一般都是用SQL语句。但是当逻辑越来越复杂时,仅仅使用顺序执行的SQL语句序列表现出很大的局限性。这时,就可以考虑用另一种方法了,那就是存储过程。 现在数据...
  • u010066934
  • u010066934
  • 2014年06月21日 20:58
  • 1890

数据库-存储过程(概念、优缺点、分类)

(1)概念:     ① 存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集。经编译后存储在数据库 中。     ② 存储过程是数据库中的一个重要对象,用户通过指定存...
  • zdplife
  • zdplife
  • 2015年08月28日 16:39
  • 2540

数据库存储过程总结

 在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其...
  • fsclc
  • fsclc
  • 2007年01月16日 10:20
  • 13131

存储过程和数据导入

目前在很多项目中都会使用存储过程。 存储过程在用来处理业务逻辑比较复杂的项目是有利于程序员节省时间。一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速...
  • DCBTB
  • DCBTB
  • 2016年05月30日 21:25
  • 532

触发器、存储过程的建立与使用—实验报告

一、实验目的  了解触发器和存储过程的概念和作用,掌握创建和使用触发器、存储过程的方法,为后继学习和开发程序作准备。 二、实验属性     1、了解触发器、存储过程的作用。  ...
  • hh12211221
  • hh12211221
  • 2016年12月20日 12:19
  • 956

存储过程备份和还原sqlserver

数据库列表:帐套数据库与系统数据库列表。 备份文件列表:数据源来自master.dbo.sys_BackupHistory表。 首先在master数据库建立3个存储过程及一个备份历史表...
  • sgpian
  • sgpian
  • 2016年08月02日 18:55
  • 1968
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库存储过程总结
举报原因:
原因补充:

(最多只允许输入30个字)