sql的一些操作,游标分页,事务

----sql事务---

CREATE PROC USP_PROCNAME
//参数
AS
 BEGIN TRY
   BEGIN TRANSACTION
    //SQL语句
 COMMIT
END TRY
begin catch
IF(@@TRANCOUNT>0)
ROLLBACK
DECLARE @ErrMsg nvarchar(4000),@ErrSeverity int
SELECT @ErrMsg=ERROR_MESSAGE(),@ErrSeverity=ERROR_SEVERITY()
RAISERROR(@ErrMsg,@ErrSeverity,1)
end catch

 

 

----sql分页(微软)---

/// <summary>
/// 得到列表:分页
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="pageIndex">当前页码</param>
/// <param name="pageSize">每页显示的记录条数</param>
/// <param name="pageCount">总共有多少页</param>
/// <param name="recordCount">记录总数</param>
/// <returns></returns>
public DataSet GetPageSplit(string sql, int pageIndex, int pageSize, out int pageCount, out int recordCount)
{
            if (pageIndex <= 0)
            {
                pageIndex = 1;
            }

            DataSet ds = new DataSet();

            SqlParameter[] parameters = new SqlParameter[]{
                               DbTShop.MakeInParam("@sql", SqlDbType.VarChar, -1, sql),
                               DbTShop.MakeInParam("@pageIndex", SqlDbType.Int, 4, pageIndex),
                               DbTShop.MakeInParam("@pageSize", SqlDbType.Int, 4, pageSize),
                               DbTShop.MakeOutParam("@pageCount", SqlDbType.Int, 4),
                               DbTShop.MakeOutParam("@recordCount", SqlDbType.Int, 4)
            };

            ds = DbTShop.ExecuteDataset("PageSplit", parameters);

            pageCount = parameters[3].Value != null ? int.Parse(parameters[3].Value.ToString()) : 0;
            recordCount = parameters[4].Value != null ? int.Parse(parameters[4].Value.ToString()) : 0;

}

-- =============================================
-- 分页存储过程
-- =============================================

ALTER PROCEDURE [dbo].[PageSplit]
    @sql VARCHAR(MAX) ,--要执行的sql语句
    @pageIndex INT = 1 , --当前页码
    @pageSize INT ,--每页的大小
    @pageCount INT = 0 OUT ,--总页数
    @recordCount INT = 0 OUT--总记录数
AS
    SET NOCOUNT ON
    DECLARE @p1 INT
    EXECUTE sp_cursoropen @p1 OUTPUT, @sql, @scrollopt = 1, @ccopt = 1,
        @rowcount = @pageCount OUTPUT
    SET @recordCount = @pageCount
    SELECT  @pageCount = CEILING(1.0 * @pageCount / @pageSize)
    IF @pageIndex > @pageCount
        SELECT  @pageIndex = @pageCount
    SELECT  @pageIndex = ( @pageIndex - 1 ) * @pageSize + 1

    EXECUTE sp_cursorfetch @p1, 16, @pageIndex, @pageSize
    EXECUTE sp_cursorclose @p1

 

posted @ 2015-09-24 13:39  杨杨得意  阅读(252)  评论(0编辑  收藏  举报