zoukankan      html  css  js  c++  java
  • SQL专题之------------存储过程

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

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

         假设有这样一张表People

         

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

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

     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

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

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

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

         (

             这里写参数

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

             @name varchar(20),

             @pwd varchar(20)

         )

         as

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

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

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

         来看一下书面的定义

         

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

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

           先看一个例子

           

    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

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

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

         

    --表重命名
    exec sp_rename 'stu', 'stud';
    select * from stud;
    --列重命名
    exec sp_rename 'stud.name', 'sName', 'column';
    exec sp_help 'stud';

    常见存储过程总结

          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来实现分页存储过程的原理。道理是这样,但是要实际写出这个存储过程还是有点费劲的,我们接下来来一点一点做。

            

         

  • 相关阅读:
    jsonp解决跨域
    rkhunter
    freshclam
    ntpdate
    一个汉字占几个字节
    plsql developer 使用 oracle instantclient的安装和配置
    初学者学习计划
    pslq常用操作
    plsql使用
    Tomcat性能调优方案
  • 原文地址:https://www.cnblogs.com/zhousilai/p/3765193.html
Copyright © 2011-2022 走看看