• SQL Server 存储过程简单使用


    1 创建存储过程

      1.1 创建简单的存储过程

       创建语句:

    create proc usp_helloworld
    as
    begin
        print 'Hello World'
    end

      创建完后,调用语句格式 exec + 存储过程名:exec usp_helloworld

    执行结果:

      

      1.2 创建带参数的存储过程

       语句:

    复制代码
    create proc usp_book
    @name nvarchar(50),
    @author nvarchar(50)
    as
    begin
        select * from book where name=@name and author=@author
    end
    复制代码

      表中的数据:

      调用存储过程,因为定义两个参数,在调用的时候需要给参数赋值。下面两种方法都行:

    (1)exec usp_book "神雕侠侣","金庸"   

    (2)exec usp_book @name="神雕侠侣",@author="金庸"

      执行结果:

      1.3  带默认值的存储过程

      创建语句:

    create proc usp_select_hero1
    @heroname nvarchar(50)  = '温青青'
    as
    begin
        select * from hero where hero=@heroname
    end

      表中数据:

      因为参数已经给了默认值,在调用存储过程的时候,可以不指定参数。

      如:直接调用:exec usp_select_hero1 结果如下:

      也可以重新给参数赋值如:exec usp_select_hero1 @heroname='无尘' 结果如下:

      1.4 创建带输出参数的存储过程output关键字

       创建语句:

    复制代码
    create proc usp_output
    @bookname nvarchar(50),
    @recordCount int output --关键字代表输出参数
    as
    begin
        select * from hero where bookname=@bookname
        --把查询的记录条数赋值给变量@recordCount
        set @recordCount = (select count(*) from hero where bookname=@bookname)
    end 
    复制代码

      调用带有参数的存储过程,需要定义变量,并把变量传递给参数,如下:

    declare @num int
    exec usp_output @bookname='书剑恩仇录',@recordCount=@num output
    select @num as 记录条数

      结果:

     

    2 使用存储过程实现分页

    语句:

    复制代码
    create proc usp_fenye
    @pagesize int=3, --每页记录的条数
    @index int=1,    --当前查看第几页的内容
    @recordcount int output, --总的条数
    @pagecount int output --总的页数
    as
    begin
        --分页
        select
            t.id,
            t.bookname,
            t.hero
        from (select *,rn=row_number() over(order by id asc) from hero) as t
        where t.rn between (@index-1) * @pagesize + 1 and @pagesize * @index
        --计算总的条数
        set @recordcount =( select count(*) from hero)
        --计算总的页数
        set @pagecount=ceiling(@recordcount * 1.0 / @pagesize)  --ceiling向上取整
    end
    复制代码

    执行:

    declare @tiaoshu int
    declare @yeshu int
    exec usp_fenye @pagesize=5,@index =3,@recordcount=@tiaoshu output,@pagecount=@yeshu output
    select @tiaoshu as 总的条数
    select @yeshu as 总的页数

    结果:

  • 相关阅读:
    LeetCode(65) Valid Number
    LeetCode(57) Insert Interval
    Python 之scrapy框架58同城招聘爬取案例
    Python 之12306网站验证码校验案例
    Python 之selenium+phantomJS斗鱼抓取案例
    Python 之pytesseract模块读取知乎验证码案例
    Python 之糗事百科多线程爬虫案例
    Python 之beautifulSoup4解析库
    Python 之lxml解析库
    把一张的数据添加到另一张中
  • 原文地址:https://www.cnblogs.com/summer2008/p/13723099.html
Copyright © 2020-2023  润新知