存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。

存储过程作用:

(1) 存储过程通过参数传递,安全性高,可防止注入式攻击.

(2) 查询的语句在存储过程里,与程序不相关,如果以后要修改程序或者数据库,都不会出现连锁反应,增加系统可扩展性.

(3) 网站执行查询的时候,只需要传递简单的参数就可以了,无论是代码优化上还是查询优化上都可以做到高效.

(4) 允许模块化编程,即,可以将一组查询写在一个过程里面,然后在程序里直接调用,而不必每次都写若干个语句来实现相应功能

具体使用:数据表来源http://blog.csdn.net/buyingfei8888/article/details/17399837

1 存储过程进行简单查询

if exists(select 1 from sysobjects where id=object_id('test') and xtype='P') --判断存储过程是否存在
drop proc test;
go
create proc test
as
select s_name 商店名字,s_address 商店地址,c_name 销售人员 from t_shop,t_cash_housewoker where s_id in(select s_id from manage where m_id=1) and t_cash_housewoker.m_id=1

执行:

exec test

对上面几个词汇解释 sysobjects  object_id:

1、sysobjects
系统对象表。 保存当前数据库的对象,如约束、默认值、 日志、规则、 存储过程等
在sqlserver2005,sqlserver2008版本的数据库里,现在已经作为一个视图对象,在每一个数据库的系统视图中,都存在一个sys.sysobjects 视图对象。
sysobjects 重要字段解释:
sysObjects (
Name sysname, --object 名称
id int, --object id
xtype char(2), -- object 类型
type char(2), -- Object 类型(与xtype 似乎一模一样? 有点郁闷…)
uid smallint, -- object 所有者的ID
... --其他的字段不常用到。
)
注:需要解释的是 xtype 和type 是一模一样的,他的数据为:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN =  标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L =  日志
P =  存储过程
R = 规则
RF = 复制筛选 存储过程
S = 系统表
TF = 表函数
TR =  触发器
U = 用户表
V = 视图
X = 扩展 存储过程
AF = 聚合函数 (CLR)
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
IF = 内联表函数
IT = 内部表
PC = 程序集 (CLR) 存储过程
PK = PRIMARY KEY 约束(type 为 K)
SN = 同义词
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TT = 表类型
UQ = UNIQUE 约束(type 为 K)
该表中包含该数据库中的所有对象,如有那些表  存储过程 视图 等信息
2 object_id
在sysobjects系统表中存储着数据库的所有对象,每个对象都有一个唯一的id号进行标识.

   object_id就是根据对象名称返回该对象的id.

2 带参数存储

if (object_id('test', 'P') is not null)drop proc test
go
create proc test(@Id int)
asselect s_name 商店名字,s_address 商店地址,c_name 销售人员 from t_shop,t_cash_housewoker where s_id in(select s_id from manage where m_id=@Id) and t_cash_housewoker.m_id=@Idgo

执行:

exec test 1;

3 带通配符的存储

if (object_id('test', 'P') is not null)drop proc test
go
create proc test(@name varchar(20) = '%j%', @nextName varchar(20) = '%')
asselect * from manage where m_name like @name or m_name like @nextName;
go

执行:

exec test;
exec test '%步%', '%u%';

4 带输出参数的存储过程

if (object_id('test', 'P') is not null)drop proc test
go
create proc test(@id int, --默认输入参数@name varchar(20) out, --输出参数@age varchar(20) output--输入输出参数
)
asselect @name=m_name,@age=m_bir from manage where m_id=@id

执行:

declare @id int,@name varchar(20),@bir varchar(20);
set @id = 1;
exec test @id, @name out, @bir output;
select @name, @bir;
print @name + '#' + @bir;

转载于:https://www.cnblogs.com/riasky/p/3481510.html

数据库综合系列 之 存储过程相关推荐

  1. 存储过程系列之存储过程具体操作过程及sql数据库调用

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...

  2. 数据库实验系列之3存储过程和触发器实验(存储过程和触发器)

    存储过程和触发器实验(存储过程和触发器) 实验9:存储过程实验 实验10:触发器实验 本文最初由security9968发布于security9968的csdn博客,禁止任何形式的剽窃行为 转载原创文 ...

  3. MYSQL学习与数据库综合实验(八)——存储过程实验

    8.存储过程实验 8.1存储过程定义 存储过程是一组为了完成特定功能的 SQL 语句集合.使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后 ...

  4. 图数据库应用系列(一):金融智能风控

    导语 图数据库是一种新型的NoSQL数据库管理系统,使用图论(GraphTheory)的"图"作为数据模型,将实体表示为图的节点,实体间的关系表示为图的边,能够直接揭示事物之间关联 ...

  5. ASP.NET数据库访问系列教程01-概述篇 创建数据访问层(中)

    ASP.NET数据库访问系列教程 本教程深入探讨了基于ASP.NET 2.0技术的数据库访问方法和模式.这些介绍非常简明,并且提供了一步步的指导和大量的截屏. 该系列教程包括: 概述篇 基础报表 主/ ...

  6. 学生课程成绩信息实体表设计mysql_数据库综合实验--设计某高校学生选课管理系统...

    数据库综合实验重做 因为期末的时候做数据库综合实验太匆忙,很多地方都是能用就好,做完之后突然想到可以改进的方法,所以现在寒假来重做一下 题目如下: 设计某高校学生选课管理系统 实现学生信息.课程学生管 ...

  7. 数据库综合实验——网上书店管理系统

    数据库综合实验13--网上书店管理系统 实验要求:给出网上书店管理系统的需求分析报告(见四),要求根据功能分析和数据分析设计概念模型,实现完整的数据库(包括:各种表,视图,必要的存储过程,触发器等). ...

  8. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

  9. 数据库事务系列-事务模型基础

    从这篇文章开始,笔者将会在接下来很长时间里整理记录一个相对独立的知识领域-数据库事务,之所以忽然有这个想法,说来也是一种机缘巧合.本来是单纯计划写写HBase行级事务模型的具体实现的,但是在周末一不小 ...

最新文章

  1. Oracle_052_lesson_p9
  2. 51单片机复习:矩阵键盘
  3. 每天一个linux命令cd,每天一个linux命令-cd
  4. 通过jsp向mysql批量导入数据_JSP+Servlet+C3P0+Mysql实现的图书馆管理系统
  5. 蝴蝶优化算法_腾讯机智团队分享--AllReduce算法的前世今生
  6. 使用dao时,如何同时使用动态表名和过滤字段?
  7. Zoom创始人袁征转让约1800万股股票 价值超过60亿美元
  8. 29岁仍在考编制,事业编和教师编都在备考,很多人都说过了年龄了,不适合再考,是吗?
  9. PC自增与转移地址计算问题总结
  10. android 放大镜功能,Android 做一个放大镜的效果(转)
  11. Android谷歌地图地理编码,使用谷歌地图api iOS反向地理编码
  12. 仿生蜘蛛机器人的制作
  13. python计算方位角_python 计算方位角实例(根据两点的坐标计算)
  14. Linux云计算好学吗?Linux云计算运维学习资料 文件的基本管理
  15. 在线运行Java代码获取APNIC中国区的ip段,用作绕过国内ip
  16. 网络入门基础模型, 网络大体框架, TCP/IP协议栈, 各种局域网和广域网刨析 (以图解的方式推开网络大门)
  17. window.print()打印指定页面内容
  18. SQL数据库基础知识巩固
  19. 《架构师杂志》评述:Scott Guthrie
  20. 《程序猿》12月刊约稿:技术走向管理要实现的转变

热门文章

  1. Hadoop Yarn配置参数整理(非常全面)
  2. Go变量地址值和指针的关系
  3. 【好文收藏】K8S集群部署CoreDNS服务
  4. k8s pod镜像拉取策略:Always、IfNotPresent、Never
  5. docker安装influxdb、grafana及展示数据到grafana
  6. jvm的发展历程:classic、exact、hotspot、BEA的JRockit、IBM的J9、 KVM和CDC/CLDC Hotspot、Azul VM、Liquid VM
  7. Python Django Q查询和F查询API
  8. MySQL使用用户变量优化先更新后查询
  9. 【软考-软件设计师】程序设计语言基础知识框架
  10. MySQL FORMAT函数示例