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

http://www.cnblogs.com/jiajiayuan

存储过程的基本知识:

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

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

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

无参数存储过程:
选出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

转载于:https://www.cnblogs.com/SH03/p/5158072.html

sqlserver的存储过程相关推荐

  1. 把sqlserver中存储过程改写到oracle中

    一同学叫我帮忙改存储过程sqlserver----->oralce数据中: sqlserver中存储过程: SET QUOTED_IDENTIFIER ON     GO  SET ANSI_N ...

  2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  3. SQLServer 的存储过程与java交互

    一.   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程 ...

  4. 为什么sqlserver创建存储过程成功,却找不到这个存储过程呢

    1.为什么sqlserver创建存储过程成功,却找不到这个存储过程呢? 需要点击工具上,创建存储过程,在那个里面去写存储过程,然后再刷新存储过程就会出现了 注意:如果是在新建查询上面,直接写sql创建 ...

  5. sqlserver 创建存储过程及基本语法

    本文记录sqlserver 创建存储过程及基本语法的讲解,附上作者实现功能的实例 背景:作者的task是需要两个数据库之间进行数据迁移,本可以用java程序来实现,后面觉得可以学习下存储过程,故采用这 ...

  6. SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)...

    存储过程有三种返回: 1.   用return返回数字型数据 2.   用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行) 3.   直接在存储过程中用select返回结果集,可 ...

  7. Hibernate中通过annotaion配置SQLServer的存储过程

    为什么80%的码农都做不了架构师?>>>    环境:hibernate 3.3.1 +spring 2.5.6+ sql server 2005 首先,上spring的hibern ...

  8. sqlserver使用存储过程发送http请求

    本文主要向大家介绍了SQLServer数据库访问发送Http请求,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. -- 通用读取获取数据存储过程 --开启Sql Serve ...

  9. Sqlserver备份存储过程

    查了网上找不到快速备份Sqlserver存储过程的方法,心里想,如果Sqlserver不自带这个功能,真是太low了. 步骤1:打开存储过程文件夹 步骤2:按 F7 键,打开"对象资源管理器 ...

最新文章

  1. Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)
  2. 项目需求 | PC VR头戴显示器实时三维坐标(项目经费20万)
  3. 河北高速盘点七大假牌假证违法案例:寒冬穿大裤衩开车
  4. linux中 用户管理命令,Linux中的常用用户和用户组管理命令
  5. 系统架构设计的工程与艺术(0)
  6. arcgis9.2的安装方法
  7. jsp内置对象------session
  8. 什么是以太网光纤收发器,其产品特点和技术参数都有哪些?
  9. 2017年4月21号课堂笔记
  10. Java学习笔记——模块化
  11. 打印心形c语言,C语言打印心形
  12. OPNET网络仿真分析-1.1.1、网络仿真简介
  13. python链接mysql的代码
  14. 【计算机网络】网络层 : RIP 协议 ( 路由选择协议分类 | RIP 协议简介 | 信息交换 | 距离向量算法 | 计算示例 )★
  15. 【BAT】win10 命令行工具cmd乱码解决方案及cmd非常用命令chcp介绍
  16. 七年级上册数学计算机教学视频,人教版初中数学七年级上册
  17. python 爬阳光高考高校数据
  18. Cents7通过rpm安装mysql
  19. ubuntu20.04 GPU基准测试
  20. 文章资源下载——百度云

热门文章

  1. pytorch torch.utils.data.TensorDataset
  2. werkzeug routing.Rule
  3. 09 动态数组和数据
  4. Flask Middle
  5. TensorFlow tf.keras.backend.ctc_batch_cost
  6. opencv-api drawKeypoints drawMatches
  7. PHP学习总结(5)——PHP入门篇之PHP字符串
  8. Java基础学习总结(64)——Java内存管理
  9. linux sed 1的意思,linux命令(1):sed命令
  10. java生成平滑散点图_【转载】如何在excel制作散点图平滑线散点图