sqlserver的存储过程

摘要:
本周,我们开始查询和使用SQL server数据库的存储过程。对存储过程的理解仅在oracle数据库中使用。理解存储过程实际上是一些查询语句和数据库事务的结合。存储过程是作为可执行对象存储在数据库中的一个或多个SQL命令。存储过程实际上是一组可以完成某些操作的SQL语句。

继上一个数据库分页功能完成之后,这周开始进行一个sqlserver数据库的存储过程查询和运用。之前只了解过mysql数据库和oracle数据库,对于存储过程的了解只是在oracle数据库上面有所运用。加上对sqlserver数据库不太了解,所以一开始有点无从下手,看了一些资料。了解存储过程实际上就是将一些查询语句与数据库的事务处理相结合,方便我们在运用的时候可以直接调用存储过程里面的结果集,而不用每执行一个操作就写一个sql语句。下面一些资料来自于博客园园友 佳园

http://www.cnblogs.com/jiajiayuan

存储过程的基本知识:

什么是存储过程呢?
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 
通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。

那为什么要用存储过程呢?
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权

那存储过程怎么用呢?
以下通过表Student 来了解存储过程,因为是要了解存储过程的简单用法,所以所有例子均很简单。
sqlserver的存储过程第1张

无参数存储过程:
选出Student表中的所有信息,

create proc StuProc
as //此处 as 不可以省略不写
begin //begin 和 end 是一对,不可以只写其中一个,但可以都不写
select S#,Sname,Sage,Ssex from student
end
go

有参数存储过程:
全局变量
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。
选出指定姓名的学生信息:

复制代码
create proc StuProc
@sname varchar(100) 
as 
begin
select S#,Sname,Sage,Ssex from student where sname=@sname
end
go

exec StuProc '赵雷' //执行语句
复制代码

上面是在外部给变量赋值,也可以在内部直接给变量设置默认值

复制代码
create proc StuProc
@sname varchar(100)='赵雷'
as 
begin
select S#,Sname,Sage,Ssex from student where sname=@sname
end
go

exec StuProc
复制代码

也可以把变量的内容输出,使用output

复制代码
create proc StuProc
@sname varchar(100),
@IsRight int output //传出参数
as 
if exists (select S#,Sname,Sage,Ssex from student where sname=@sname)
set @IsRight =1
else
set @IsRight=0
go

declare @IsRight int 
exec StuProc '赵雷' , @IsRight output
select @IsRight
复制代码

以上是全局变量,下面来了解局部变量
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内部,离开该函数后再使用这种变量是非法的。
局部变量的定义:必须先用Declare命令定以后才可以使用,declare{@变量名 数据类型}
局部变量的赋值方法:set{@变量名=表达式}或者select{@变量名=表达式}
局部变量的显示:select @变量名

复制代码
create proc StuProc
as 
declare @sname varchar(100)
set @sname='赵雷'
select S#,Sname,Sage,Ssex from student where sname=@sname
go

exec StuProc
复制代码

那如果是要把局部变量的数据显示出来怎么办呢?

复制代码
create proc StuProc
as 
declare @sname varchar(100)
set @sname=(select Sname from student where S#=01)
select @sname
go

exec StuProc
复制代码
 

免责声明:文章转载自《sqlserver的存储过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇记Git保存本地密码与删除本地缓存python进程池:multiprocessing.pool下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据库6.高级

1.视图:什么是视图:视图是有一张或多张表的查询结果构成的一张虚拟表create view dept_view as select *from dept;为什么使用视图:使用权限控制 只能开放某一列的数据访问 对于目前的查看工资而言是没有意义的我们使用虎能够查看整条语句1.多次使用时,可以简化书写2.隔离数据,可以修改原表中的数据;但是我们一般不会这么做。总...

ROS(Robot Operating System)常用环境变量介绍

本文简单介绍ROS系统中常用的环境变量用途及设置方式。ROS系统环境中除了必须配置的环境变量以外,其他的也是十分有用,通过修改变量路径,可以设置ROS系统中log文件存放路径,单元测试结果存放路径等。 http://wiki.ros.org/ROS/EnvironmentVariables 一 、必选设置的环境变量 1、 ROS_ROOT 这个是ROS核心...

巨杉数据库中标张家口银行、保定银行,华北地区布局再升级

近期,巨杉数据库中标张家口银行,保定银行项目,应用业务场景包括联机业务、数据中台等,这标志这巨杉数据库银行业布局再进一步。 城商行是目前我国具有重要意义的一类银行,近年来随着市场的变化,城商行的机遇更加多元,但同时行业竞争和金融风险的也在逐渐增加。因此,城商行也迫切的进行着业务的创新与升级,科技创新成为了其中至关重要的核心环节。 巨杉数据库作为金融级分布式...

Node.js Express博客项目实战 之 项目需求分析

项目概述:       本项目主要使用Node.js+express框架+mysql数据库完成博客系统开发 项目需求:  node 安装与运行 node 基础模块的使用 npm 使用 mysql 数据库的基本知识 项目分析: 1)前台功能分析       首页 栏目列表 轮播图展示 最新发布 热门文章 搜索功能      分类页 分类新闻 热...

Linux 中 sqlite3 基本操作

https://www.runoob.com/sqlite/sqlite-commands.html 一 。linux 下安装数据库和创建一个数据库 1. Linux 下安装sqlite3 需要两个命令 即可    (1) sudo apt-get install sqlite     (2) sudo apt-get install libsqlite3...

视图的用处

    以往当我们查询数据时,一定要很认真的地从设计 select语句开始,将需要查询的每个字段写在sql语句里,每次你要以同样的条件来查询数据时,那么每次都要重复输入相同的查询语句,效率很低。若将这个经常要重复使用的查询语句创建成视图,就不用那么麻烦了!直接用select * from 视图名就行了,其实将查询语句创建成视图,不仅仅是简化查询的动作;更重要...