• 存储过程——分页功能及触发器(八)


    • 实现分页功能
    1. 要求取出表A中第31到40条的记录(第4页信息),sql server以自动增长的ID作为主键,注意ID不能是连续的

    答案

    select top 10 * form A where id not inselect top 30 id from A)

    那通过存储过程怎样去实现通用的分页功能的
    分析

    1. 转递参数,表名,页码,页面数据展示大小,主键列名

    以下雏形便产生了

    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: 2014年4月13日 00:36:24
    -- Description:    分页功能
    -- =============================================
    CREATE PROCEDURE GetDataByPageNo 
        @tablename nvarchar(100),--表名
        @pagesize int,--页大小
        @pageno int,--页码
        @columns nvarchar(50)--按列排序
    AS
    BEGIN
        DECLARE @sql nvarchar(1000)
        SET @sql='select top '+CAST(@pagesize as nvarchar(10))+' *  from '+@tablename+
         ' where '+ @columns +' not in (select top '+CAST((@pageno-1)*@pagesize as nvarchar(10))+' '+@columns+' from '+ @tablename+' )'
        EXEC(@Sql)
    END
    • 触发器
    1. 触发器简介

    触发器是一种DBMS相应特殊表或增、删、改操作的特殊类型的存储过程

        2. 触发器语法

    具体应用如下

    1. 要求,流水账号实现

    流水帐号格式:20140413000000、20140413000000

    给产品表添加触发器

    通过存储过程添加数据实现存触发器,修改表字段

      2.  具体操作如下

    分析:

    流水号格式,当期日期+最大id号六位数字组成

    代码如下

    -- Author:        <Author,,Name>
    -- Create date:  2014年4月13日 11:39:48
    -- Description:    生成流水号
    -- =============================================
    CREATE TRIGGER [dbo].[SetProNO] 
       ON   [dbo].[product]--操作表
       AFTER INSERT--具体操作,执行什么操作触发
    AS 
    BEGIN
        DECLARE @year nvarchar(10)
        DECLARE @mouth nvarchar(10)
        DECLARE @day nvarchar(10)
        DECLARE @id nvarchar(50)
        DECLARE @No nvarchar(50)
        DECLARE @str nvarchar(10)
        SET @year=Datename(yyyy,getdate())
        SET @mouth=Datename(mm,getdate())
        SET @day=Datename(dd,getdate())
        SET @str='000000'
        SELECT @id=MAX(ID) FROM [dbo].[product]
        SET @No=@year+@mouth+@day+RIGHT(@str+@id,6)
        UPDATE product SET No=@No where id=@id
    END

    调用下面存储过程,直接触发上述触发器

    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: 2014年4月13日 12:03:13
    -- Description:    产品信息添加
    -- =============================================
    CREATE PROCEDURE [dbo].[Addproduct]
        @Name nvarchar(50),
        @Price money,
        @address nvarchar(50),
        @type int
    AS
    BEGIN
      INSERT product
      (
          Name,
          Price,
          Address,
          Type
      )
      VALUES
      (      
      @Name,
      @Price,
      @Address,
      @type
      )
    END
  • 相关阅读:
    【java基础 11】java集合框架学习
    【java基础 10】hash算法冲突解决方法
    【java 基础 9】原来我从没有了解过String类
    阳光总在风雨后——研究生考后总结
    【java基础 8】垃圾收集算法及内存分配策略
    【java基础 7】java内存区域分析及常见异常
    【java基础 6】java的发展史简介
    springboot的使用体验和思考
    大道至简——你比你想象中更早接触微服务
    【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
  • 原文地址:https://www.cnblogs.com/tuqun/p/3662079.html
Copyright © 2020-2023  润新知