SQL Server存储过程入门学习

 更新时间:2013年08月05日 10:17:27   作者:  
存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如果该存储过程带有参数来执行

存储过程的定义,

存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如果该存储过程带有参数来执行。
在SQL Server 的系列版本中,存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统SP,主要存储master 数据库中,并以sp_为前缀并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server。
用户自定义存储过程是由用户创建,并能完成某一特定功能,如:查询用户所需数据信息的存储过程。

这里我们看看存储过程的好处;

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

好了,我们来看看创建的基本语法

定义存储过程的语法

CREATEPROC[EDURE]存储过程名
@参数1数据类型=默认值,
…… ,
@参数n数据类型OUTPUT
AS
SQL语句
GO
参数是可选的
参数分为输入参数、输出参数
输入参数允许有默认值
这里来创建一个简单的存储过程

CREATE PROCEDURE UserLogin@name varchar(20),@password varchar(20)
AS
-- 定义一个临时用来保存密码的变量--DECLARE @strPwd NVARCHAR(20) 这里先不介绍变量。稍后的文章会详细讲到BEGINselect * from userinfo where userName=@name and userPass=@passwordENDGO
首先我们用简单的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....

上面我们也看到了。

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

相关文章

  • 基于Python的SQL Server数据库实现对象同步轻量级

    基于Python的SQL Server数据库实现对象同步轻量级

    这篇文章主要介绍了基于Python的SQL Server数据库对象同步轻量级实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • sqlserver 触发器实例代码

    sqlserver 触发器实例代码

    何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程
    2011-12-12
  • 一次性压缩Sqlserver2005中所有库日志的存储过程

    一次性压缩Sqlserver2005中所有库日志的存储过程

    通过下面这个可以执行单个数据库日志压缩,问题每次都要写数据库名字,日志大的话执行速度没有那么快
    2012-01-01
  • T-SQL篇如何防止SQL注入的解决方法

    T-SQL篇如何防止SQL注入的解决方法

    所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,对于这种行为,我们应该如何制止呢?本文将介绍一种方法,希望可以帮助有需要的朋友
    2012-11-11
  • SQL Server中实现自定义数据加密功能

    SQL Server中实现自定义数据加密功能

    在当今数字化时代,数据安全已成为企业和个人最为关注的问题之一,SQL Server提供了多种数据加密技术,包括透明数据加密(TDE)、备份加密以及列级加密等,本文将详细介绍如何在SQL Server中实现自定义数据加密功能,需要的朋友可以参考下
    2024-08-08
  • SQL学习笔记一SQL基础知识

    SQL学习笔记一SQL基础知识

    刚开始接触sqlserver的朋友可以参考下。虽然文字比较短,但内容都是经验之谈。
    2011-08-08
  • SQLserver删除某数据库中所有表实现思路

    SQLserver删除某数据库中所有表实现思路

    方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,因为那样太危险了所以需要先删除库中的约束,接下来提供详细实现代码,感兴趣的你可以参考下哦,或许对你学习有所帮助
    2013-02-02
  • 大容量csv快速内导入sqlserver的解决方法(推荐)

    大容量csv快速内导入sqlserver的解决方法(推荐)

    最近遇到这样的问题:导入csv 数据,并对导入的数据增加一个新的列date datetime,下面通过本文给大家分享大容量csv快速内导入sqlserver的解决方法,感兴趣的朋友一起看看吧
    2017-07-07
  • sql存储过程几个简单例子

    sql存储过程几个简单例子

    存储过程是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序。经编译后存储在数据库中。存储过程是数据库中一个重要的对象
    2016-02-02
  • 将表数据生成Insert脚本 比较好用的生成插入语句的SQL脚本

    将表数据生成Insert脚本 比较好用的生成插入语句的SQL脚本

    比较好用的生成插入语句的SQL脚本 将表数据生成Insert脚本
    2010-05-05

最新评论