利用存儲過程分頁

USE [iDB002]

GO

/****** Object:  StoredProcedure [dbo].[PICM_Page]    Script Date: 05/24/2013 14:00:33 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author       : PICM

-- Create date  : 2013/04/18

-- Description  : 燒錄產能新增

-- =============================================

ALTER PROCEDURE [dbo].[PICM_Page]

 

@SQL            NVARCHAR(4000),

@CurrentPage    int,

@PageSize       int = 10,

@OrderBy        NVARCHAR(400),

@ReturnData   NVARCHAR(50)    OUTPUT

 

AS

BEGIN

    ----初始化----------

    SET @ReturnData='0'

   

    if @CurrentPage = 1

        BEGIN

            exec('select top '+@PageSize+' * from ('+@SQL+') r')

            return

        EnD

    else

        begin

            declare @sqlCount nvarchar(4000)

            declare @sqlReturn nvarchar(4000)

            declare @TotalCount int

            declare @TotalPage int

           

             

            set @sqlCount = 'select @count=count(*) from (' + @SQL + ') r'

           

            exec sp_executesql@sqlCount, N'@count int out', @TotalCount out

           

            set @TotalPage = Ceiling(@TotalCount*1.0/@PageSize)

             

            if @TotalPage < @CurrentPage

                Set @CurrentPage = @TotalPage

             

            SET @ReturnData=cast(@TotalCount as nvarchar)+'_'+cast(@TotalPage as nvarchar)+'_'+cast(@CurrentPage as nvarchar)

           

            SET @sqlReturn = 'select  *  from (select row_number() OVER ('+@OrderBy+') AS

                 row_number,a.* from ('+@SQL+') a

                 ) r where row_number>'+ cast(((@CurrentPage -1)*@PageSize) as nvarchar)+

                 ' and row_number<'+cast((@CurrentPage*@PageSize +1) as nvarchar)+@OrderBy

                 

            exec(@sqlReturn)   

           

            return

        end

       

    IF(@@ERROR<>0)

        BEGIN

            SET @ReturnData='ERR'

            return

        END

END

 

 

using (SqlConnection sqlConn = new SqlConnection(ConnCollection.GetSqlConnStr()))

        {

            sqlConn.Open();

             

            SqlCommand cmd = sqlConn.CreateCommand();

 

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.CommandText = "PICM_Page";

           

            cmd.Parameters.Add("@SQL", SqlDbType.NVarChar,4000).Value = @"select  a.* from HR_Emp_Now a

                 union

                 select  a.* from HR_Emp  a";

 

            cmd.Parameters.Add("@CurrentPage", SqlDbType.Int).Value = 2;

            cmd.Parameters.Add("@PageSize", SqlDbType.Int).Value = 10;

            cmd.Parameters.Add("@OrderBy", SqlDbType.NVarChar,400).Value = " order by empid desc ";

            cmd.Parameters.Add("@ReturnData", SqlDbType.NVarChar, 50).Direction = ParameterDirection.Output;

         

            cmd.ExecuteNonQuery();

            Response.Write(cmd.Parameters["@ReturnData"].Value.ToString());

 

            DataSet ds = new DataSet();

 

            SqlDataAdapter adt = new SqlDataAdapter();

 

            adt.SelectCommand = cmd;

            adt.Fill(ds);

            SqlDataReader dr = cmd.ExecuteReader();

            gv.DataSource = ds.Tables[0];

            gv.DataBind();

                  sqlConn.Close();

            

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值