存储过程入门

23人阅读 评论(0) 收藏 举报
分类:
存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,经过编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数来执行)。


存储过程分为两类:系统提供的存储过程和用户自定义的存储过程。
  系统SP,主要存储在master 数据库中,并以sp_为前缀,系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server。


存储过程的好处:
        (1)重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
        (2)提高性能:存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。
        (3)减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
        (4)安全性:参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。


定义存储过程的语法:

    CREATE  PROC[EDURE]  存储过程名
              @参数1  数据类型 = 默认值,
               …… ,
              @参数n  数据类型 OUTPUT
            AS
            SQL语句
    GO


说明:参数是可选的,参数分为输入参数、输出参数(OUTPUT),输入参数允许有默认值


这里来举一个简单的存储过程例子:

CREATE PROCEDURE UserLogin
@name varchar(20),
@password varchar(20)
AS
BEGIN
select * from userinfo where userName=@name and userPass=@password
END
GO



首先我们用简单的sql语句在查询分析器查询:

select * from userinfo where userName='admin'

查询结果:
---------------------
UserName    UserPass
Admin          Admin



现在我们来执行我们的存储过程:

exec UserLogin admin,admin

或这样调用:

EXEC UserLogin @name='admin',@password='admin'

查询结果:
---------------------
UserName    UserPass
Admin          Admin


注意:

在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。

只要将以上代码在“查询分析器”(新建查询之后弹出的界面)里执行一次,SQL SERVER就会在当前数据库中创建一个名为“UserLogin”的存储过程。

你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择"可编程性->存储过程",此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可),如果找不到可通过新建筛选器查询。



在数据中调用执行存储过程的方法有两种(这里EXEC与EXECUTE等效);

EXEC  存储过程名  参数值1,参数值2,....
或者

EXEC  存储过程名  参数1=参数值1,参数2=参数值2,....

上面我们也看到了。


如果要删除一个存储过程,用drop;

像这样:

drop PROCEDURE UserLogin


创建这样的存储过程有什么用呢,不就是只能在数据库中查看?
非也,譬如我们在做web或者winform 程序或其他项目开发时,假设需要做个登录,好,我们可以调用这个存储过程来登录,根据传入的参数,如果查询出来有记录,那么这条记录在数据库中存在,表示登录成功,否则失败。
这样做的目的是更加安全,可以防止sql注入。
查看评论

MySQL---数据库从入门走向大神系列(五)-存储过程

本篇博客讲解: 自动增长列、字段值唯一性约束、存储过程!自动增长列、字段值唯一性约束create table aa( id int auto_increment primary key, ...
  • qq_26525215
  • qq_26525215
  • 2016-08-08 00:55:04
  • 6776

sql 存储过程 入门级 练习

sql 存储过程 入门级
  • samuel_zhang_
  • samuel_zhang_
  • 2015-08-20 10:16:38
  • 2958

oracle 存储过程 从入门到精通

先编写一个简单的存储过程 create or replace procedure test1 is begin dbms_output.put_line('hhh'); end test1; ...
  • qq_35776392
  • qq_35776392
  • 2017-08-17 16:58:44
  • 152

MySQL存储过程入门

存储过程入门实例 日期:2015-10-13,作者:雨水 概述 以MySQL数据库为例,简单介绍下存储过程的创建,执行和删除。 什么是存储过程 存储过程可以理解为可以保存的一...
  • gobitan
  • gobitan
  • 2015-10-13 23:53:53
  • 749

存储过程入门与提高1

  • 2008年12月17日 15:14
  • 34KB
  • 下载

oracle存储过程初学实例

认识存储过程和函数  存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以...
  • qq_37057095
  • qq_37057095
  • 2017-08-04 11:05:00
  • 899

存储过程从入门到熟练(多个存储过程完整实例及调用方法)

①为什么要使用存储过程?因为它比SQL语句执行快.②存储过程是什么?把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点)③来一个最简单的存储过程CREATE PROCED...
  • zpcelven
  • zpcelven
  • 2006-11-02 20:19:00
  • 514

MYSQL存储过程入门1、语法以及in,out区别

1.什么是存储过程? 其实存储过程就是预编译了的SQL语句。 2.优点: (1)提速: 只需要经过一次预编译,以后就可以直接调用该存储过程。如若有数百次的SQL语句执行,存储过程更快速,因为其经...
  • yanjiewen1
  • yanjiewen1
  • 2015-06-04 14:31:57
  • 594

MySQL 存储过程入门到精通

  • 2011年09月05日 20:10
  • 467KB
  • 下载

一个 Oracle 存储过程编写的入门级例子

  一个 Oracle 存储过程编写的入门级例子    存储过程是在面试中常被问到的程序员必备技能之一。很多朋友被问到时唯唯诺诺,吞吞吐吐,明显自信不足。其实存储过程无外乎就是特定的功能,在特定的层次...
  • defonds
  • defonds
  • 2009-07-13 16:13:00
  • 31819
    个人资料
    等级:
    访问量: 165
    积分: 70
    排名: 157万+
    文章分类
    文章存档