当前位置:首页 > 数据库 > Sqlserver

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),
@authornvarchar(50)
asbeginselect*from book where name=@nameand author=@authorend

  表中的数据:

技术分享图片

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

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

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

  执行结果:

技术分享图片

  1.3  带默认值的存储过程

  创建语句:

            create
            proc
             usp_select_hero1

            @heroname
            nvarchar(50)  =温青青asbeginselect*from hero where hero=@heronameend

  表中数据:

技术分享图片

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

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

技术分享图片

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

技术分享图片

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

   创建语句:

            create
            proc
             usp_output

            @bookname
            nvarchar(50),
@recordCountint output --关键字代表输出参数asbeginselect*from hero where bookname=@bookname--把查询的记录条数赋值给变量@recordCountset@recordCount= (selectcount(*) 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, --每页记录的条数@indexint=1,    --当前查看第几页的内容@recordcountint output, --总的条数@pagecountint output --总的页数asbegin--分页select
        t.id,
        t.bookname,
        t.hero
    from (select*,rn=row_number() over(orderby id asc) from hero) as t
    where t.rn between (@index-1) *@pagesize+1and@pagesize*@index--计算总的条数set@recordcount=( selectcount(*) 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@tiaoshuas 总的条数
select@yeshuas 总的页数

结果:

技术分享图片

 

原文:https://www.cnblogs.com/xifengmo/p/10976591.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐