第一个存储过程

以前也修改过一些个存储过程,这次是从头自己些,刚下笔就不知道怎么定义了,翻书谷歌都用上了,才知道怎么个语法问题,这个存储过程是很传统的问题:分页查询问题,之前都是用sql语句直接执行的,这次要用存储过程,前台和中间层都是写死了,只能用存储过程来修改已有的功能。传过来的参数有要分页的页码和每一页的记录数,如下:

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
go
 
ALTER PROCEDURE [dbo].[user_search]
--参数是 当前页码和每一页的条数
    @pageNow INT ,
    @pageSize INT
AS ----两个局部参数用来计算数量和总页数
    DECLARE @pageCount INT
    DECLARE @rowCount INT
    SET @rowCount = ( SELECT    COUNT(ID)
                      FROM      dbo.[user]
                    ) ;
    SET @pageCount = @rowCount / @pageSize + 1
--------判断当前的页码是否超过总页码
    IF @pageNow > @pageCount
        RETURN 1 ;     
 
    ELSE
        SELECT TOP ( @pageSize )
                *
        FROM    dbo.[user]
        WHERE   ID NOT IN ( SELECT TOP ( ( @pageSize ) * ( @pageNow - 1 ) )
                                    ID
                            FROM    dbo.[user]
                            ORDER BY ID )
        ORDER BY dbo.[user].ID 

存储过程的一般格式:

create proc 存储过程名字

  @parm1 Type(数据类型),

  @parm2 Type(数据类型)

  ......

 AS

  有些内部用参数要在这里声明一下:要用关键字Declare @parm 类型  ,这个方式,

  接下来就是用结构话的语句处理业务需求,要sql语句也是其中的主要成员,借助于sql语句能和数据库

  交互,实现数据的更新和选择操作。 

    尤其是注意其中的Begin End 这是为if 或者循环语句用的,因为在T-sql里,for while以及if 语句只执行离他最近的一条语句,

    如果有多条,需要用Begion End 做一个整体执行标记。否则只执行最近的那一句了。。

接下来要到页面上来处理数据了。。

  接下来计划要用js ajax 和ssh 做一个车辆监控平台,不知道用什么js ui库好,没经验,慢慢摸索了。。

posted @   王琢  阅读(225)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示