• 存储过程


    //sp_和xp_开头的是系统存储过程:系统的存储过程不用加exec,自己写的存储过程才需要exec,一般自己创建的存储过程命名是usp_开头

    //查看自己的存储过程:数据库==》可编程性==》存储过程

    create proc usp_helloworld---------创建存储过程(存储过程,顾名思义就是存储sql语句执行过程,类似一个方法)
    as
    begin -----------------------------begin相当于{
      print 'HELLO WORLD' --------------------------这里一般就是自定义的sql语句
    end -----------------------------end相当于}

    exec usp_helloworld ------------------调用存储过程exec 

    drop proc usp_helloworld -------------删除存储过程drop proc 
    alter proc usp_helloworld ------------修改存储过程alter proc

    例子:

    创建:

    create proc usp_select_zgqx
    as
    begin
      select * from dbo.Table_1
    end

    ---------------带参数的存储过程---------
    create proc usp_myselect_cs
    @n1 int, --------------------------------@开头,后跟参数名称,空格跟参数类型
    @n2 int-------------------------------------如果@n2 int=10,这样就表示默认值,当没有传入参数时候就使用它

    as
    begin
    select @n1+@n2 -------------------直接使用参数名
    end

    exec usp_myselect_cs 100,200 --------------调用时候存储过程名称后面,空格传入参数,以逗号分开

    exec usp_myselect_cs @n1=100,@n2=200 --------------也可以这样写,更明了,这种写法更加严谨,不易出错,建议用这种

    调用:
    exec usp_select_zgqx

    ------------------------带输出参数的存储过程---------------------
    create proc usp_myselect_cs2
    @n1 int ,
    @n2 int output--------------------可以多个
    as
    begin
    set @n2=(select @n1)
    end

    declare @csn2 int --------------------------------------------声明变量@csn2
    exec usp_myselect_cs2 @n1=10,@n2=@csn2 output ---------------传入变量@n2=@csn2 output
    print @csn2

    ---------------带输出参数的分页查询----------------------

    go ----------------------------------------------------------------一起执行多条过程时候,要在前面加上Go不然会报错滴
    create proc usp_pageEach -------------过程名称usp_pageEach 
      @pagesize int ,-------------每页记录数
      @pageIndex int,----------------当前页码
      @recordcount int output,-----------记录数
      @pagecount int output ------------总页数
    as
    begin
    select
      t.国家,
      t.首都,
      t.军队数量
      from(select *,rn=ROW_NUMBER() over(order by 序列号 asc) from dbo.Table_1) as t ----------给查询结果加一列按知道字段排序的标号
      where t.rn between (@pageIndex-1)*@pagesize+1 and @pagesize*@pageIndex ------------页码范围效果:0- 7,8- 14,15-21
      set @recordcount=(select COUNT(*) from dbo.Table_1) ----------总记录条数
      set @pagecount=ceiling(@recordcount*1.0/@pagesize)-----------向上取整数
    end
    --调用--
    declare @count int,@pgcount int
    exec usp_pageEach 3,2,@recordcount=@count output,@pagecount=@pgcount output
    print @count
    print @pgcount

  • 相关阅读:
    求两图的 对比度
    关于opencv中的颜色模型转换之CV_BGR2HSV
    转 C++函数返回值,你必须注意的问题
    opencv 3.2 vs2015 debug assertion __acrt_first_block == header
    vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案
    c++ opencv 3.2 +Mfc VS2015窗体显示图片方法
    c++中“箭头(->)”和“点号(.)”操作符的区别
    C# devexpress gridcontrol 分页 控件制作
    c#Md5 32位加密结果少了两个0的原因
    opencv 线,椭圆 圆
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5733813.html
Copyright © 2020-2023  润新知