码迷,mamicode.com
首页 > 数据库 > 详细

SQL专题之------------存储过程

时间:2014-06-06 08:27:46      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

  今天来讲解一下sqlserver的存储过程,我一般习惯先从一个最简单的例子开始,然后再介绍他的语法,最后会举出一些常用和典型的存储过程

 

  1.先看一个简单地例子,形成一个印象

     假设有这样一张表People

     bubuko.com,布布扣

     我要写一个登录的存储过程,我们先来看看验证登录的sql语句,非常简单select count(*) from People where userName=‘xxxx‘ and password=‘xxxx‘,如果返回结果大于1,就证明用户存在,否则用户不存在

     下面这个就是登录的存储过程

bubuko.com,布布扣
 1 Create proc proc_Login
 2 (
 3     @name varchar(20),
 4     @pwd varchar(20)
 5 )
 6 as 
 7 declare  @count int
 8 begin
 9     
10    set @count=(select count(*)from dbo.People where userName=@name and password=@pwd)
11 
12     if @count>0
13         print 成功    
14     else
15         print 失败
16 END
bubuko.com,布布扣

 

     这是个最简单的存储过程,但是包含的东西却很多

     首先,看一下创建存储过程的语法格式,笔者就是老记不住这个语法,其实创建存储过程的语法相当简单

     create proc 这里写创建的存储过程名字

     (

         这里写参数

         参数的名字要加上@符号,比如

         @name varchar(20),

         @pwd varchar(20)

     )

     as

         这里写定义的变量,也可以写sql语句

         注意存储过程的语法,就到这里就结束了

         后面的DECLARE也好,begin也好,都不是创建存储过程的必须语法

     来看一下书面的定义

     

bubuko.com,布布扣
1 create proc | procedure pro_name
2     (
@参数数据类型 [=默认值] [output], 3 @参数数据类型 [=默认值] [output], ) 6 as 7 SQL_statements
bubuko.com,布布扣

 

       再来看一下不带参数的存储过程

       先看一个例子

       

1 CREATE PROC proc_SelectAll
2 AS
3 SELECT * FROM dbo.People

然后是执行

1 EXEC proc_SelectAll

怎么样,是不是简单,这就是一个存储过程了

下面来看一下书面的定义

 

1 create proc | procedure pro_name
2 as
3     SQL_statements

发现没,创建一个存储过程你只需要记住一个create,一个proc,一个as就可以了

       

定义与修改过程参看这篇文章http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

     下面简单介绍一下存储过程,存储过程有两种,一种是系统存储过程,一种用户自定义的存储过程

     系统存储过程我用的比较多的就是重命名的存储过程

     

bubuko.com,布布扣
--表重命名
exec sp_rename stu, stud;
select * from stud;
--列重命名

exec sp_rename stud.name, sName, column;
exec sp_help stud;
bubuko.com,布布扣

 

常见存储过程总结

      1.分页存储过程

         先来介绍一下分页存储过程的实现思路,分页存储过程有n种实现方法,本文将来一定尽可能多收集一些

         先来第一种,利用select top 和not in来实现

         先来看看这个sql语句select top(10) * from people where people.id not in (select top(100) people.id from people)

         先讲解第一部分select top(100) people.id from people

         这一句很好理解,就是从people表中筛选出前100个id,这里暂时排除排序这些因素

         第二句select top(10) * from people where people.id not in(......)

         这一句是从人员表中筛选出前10个id不在(...)中的id

         先筛选出前100id,然后再筛选出前10个不在前100个id中的id,其实就实现了筛选第101-110个元素的,这就是利用select top 和not in来实现分页存储过程的原理。道理是这样,但是要实际写出这个存储过程还是有点费劲的,我们接下来来一点一点做。

        

 

 

 

 

 

 

 

 

     

SQL专题之------------存储过程,布布扣,bubuko.com

SQL专题之------------存储过程

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/zhousilai/p/3765193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!