`
xiaoheliushuiya
  • 浏览: 402196 次
文章分类
社区版块
存档分类
最新评论

数据库综合系列 之 存储过程

 
阅读更多

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

存储过程作用:

(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 约束
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L =日志
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)
该表中包含该数据库中的所有对象,如有那些表存储过程视图 等信息
2object_id
在sysobjects系统表中存储着数据库的所有对象,每个对象都有一个唯一的id号进行标识.
   object_id就是根据对象名称返回该对象的id.
2 带参数存储
if (object_id('test', 'P') is not null)
    drop proc test
go
create proc test(@Id int)
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=@Id) and t_cash_housewoker.m_id=@Id

go

执行:
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) = '%')
as
    select * 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--输入输出参数
)
as
    select @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;





分享到:
评论

相关推荐

    达梦数据库_SQL语言手册

    数据库、登录、用户、模式、基表、视图、索引、序列、全文索引、存储过程和触发器 的定义和删除语句,登录、基表、视图、仝文索引的修改语句,对象的更名语句; 査询(含全文检索)、插入、删除、修改语句; 数据库安全...

    MySQL数据库入门到高级笔记快速学习pdf版本

    内容概要:这是博主自己写的三篇MySQL文章的综合pdf版本,干货满满,同时搭配脑图提高效率,从基础知识,比如对数据库的操作,对数据表的增删改,查单独写了一篇文章从单表到多表,子查询等等,干货满满,最后就是...

    ACCESS2010数据库基础教程-01第一章数据库系统概述.pptx

    1.1.2 数据处理 数据处理是指将数据加工并转换成信息的过程,包括对数据的收集、存储、分类、计算、加工、检索和传输等一系列活动。 数据 信息 数据处理 ACCESS2010数据库基础教程-01第一章数据库系统概述全文共24...

    电力系统数据库安全解决方案.docx

    通过数据库漏扫定期进行数据库安全检查,防患于未然,对数据库安全风险进行综合评估,对管理域中数据库的安全现状进行全面检测。安全漏洞项包括:弱口令、缺省口令、弱安全策略、权限宽泛、敏感数据发现、权限提升...

    阐述大型数据库系统安全风险及策略.docx

    出现了丰富多样的数据模型,经历了从最简单的表格存储到海量数据库系统发展过程,出现了许多大型的数据库,适用性逐渐增强。经过长期研究,我们借助数据库管理系统的选择依据,比较、分析了四种常用数据库系统的功能...

    一个基于vue的pc端综合性网上购物商城,包括前台商城和后台管理系统,后端采用koa2,数据库采用mysql。.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    人力资源管理系统数据库设计与实现.doc

    它是以提高劳动生 产率、工作生活质量和取得经济效益为目的而对人力资源进行获取、保持、开发、激励 和调整等一系列管理的过程。具体管理功能如下: 一、人事管理 人事管理实现对公司员工的全面管理,其主要包括人事...

    数据库设计超市会员管理系统.doc

    本系统利用视图、触发器,存储过程可以对数据库中的内容实现各种级联 修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由会员信息管理模块、会员优惠度模块、购物信息模块和商品...

    数据库课程设计-学生成绩管理系统.doc

    希望该 开发程序能够解决学生信息存储、学生成绩查询、录入还有课程查询等一系列功能,并 提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的 ,其中学生成绩查询和学生信息查询是系统...

    计算机毕业设计:基于ssm mysql-计算机网络实验课程教学网站 (数据库+程序+论文),保证可靠运行,附赠计算机答辩PPT 

    在数据库设计方面,我们根据实验课程的特点和需求,设计了一系列数据表,用于存储实验内容、学生信息、实验结果等数据。通过合理的数据结构和关系设计,我们确保了数据的准确性和一致性,为系统的高效运行提供了坚实...

    informix 实用大全

    本书由专业Informix用户、数据库管理员、Informix管理员和应用程序开发员编写而成,把各大Informix产品的方方面面综合、深入地集中在一起,包括最新Informix产品的详细信息,如Informix Internet Foundation.2000...

    数据库设计-超市会员管理系统.doc

    本系统利用视图、触发器,存储过程可以对数据库中的内容实现各 种级联修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由会员信息管理模块、会员优惠度模块、购物信息模块和商品...

    医院手术室数据库管理系统.doc

    三、概念设计(以下所有图都是CAD画的) 概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的 概念模型,是整个数据库设计的关键。概念设计生成E-R图。 1. 数据流图 1. 顶层数据流图 2. 0...

    数据库设计-超市会员管理系统(2).doc

    本系统利用视图、触发器,存储过程可以对数据库中的内容实现各 种级联修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由会员信息管理模块、会员优惠度模块、购物信息模块和商品...

    数据库设计-超市会员管理系统(1).doc

    本系统利用视图、触发器,存储过程可以对数据库中的内容实现各 种级联修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由会员信息管理模块、会员优惠度模块、购物信息模块和商品...

    [详细完整版]交通信息技术.doc

    数据库管理系统 DBMS位于用户与操纵系统之间的一系列以同一方式管理和维护数据库中数据的软件平台 用途:科学的组织和存储数据,高效的获取和维护数据 7.GIS技术 在计算机软硬件支持下,对地理环境诸要素进行收集、...

    医院手术室数据库管理系统(3).doc

    三、概念设计(以下所有图都是CAD画的) 概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型,是整个数据库设计的关键。概念设计生成E-R图。 1. 数据流图 1. 顶层数据流图 2...

    医院手术室数据库管理系统(1).doc

    三、概念设计(以下所有图都是CAD画的) 概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的 概念模型,是整个数据库设计的关键。概念设计生成E—R图。 1. 数据流图 1. 顶层数据流图 2. 0...

    医院手术室数据库管理系统(2).doc

    三、概念设计(以下所有图都是CAD画的) 概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的 概念模型,是整个数据库设计的关键。概念设计生成E—R图。 1. 数据流图 1. 顶层数据流图 2. 0...

    SQL Server2005基础教程

    之后以前面建立的示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,概略讲述了SQL Server Reporting Services。书中还针对数据安全性方面的...

Global site tag (gtag.js) - Google Analytics