亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

sqlserver 存儲過程學習筆記(二) 在項目中的

系統(tǒng) 2297 0

(1)存儲過程建立

USE [NewPlat] GO

/****** Object:? StoredProcedure [dbo].[usp_PagingLarge]??? Script Date: 07/11/2013 08:27:44 ******/ SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO

Create PROCEDURE [dbo].[usp_PagingLarge]?

@TableNames VARCHAR(200),???? --表名,可以是多個表,但不能用別名

@PrimaryKey VARCHAR(100),???? --主鍵,可以為空,但@Order為空時該值不能為空?

@Fields???? VARCHAR(4000),???????? --要取出的字段,可以是多個表的字段,可以為空,為空表示select *?

@PageSize INT,???????????? --每頁記錄數(shù)?

@CurrentPage INT,???????? --當前頁,0表示第1頁?

@Filter VARCHAR(4000) = '',???? --條件,可以為空,不用填 where?

@Group VARCHAR(200) = '',???? --分組依據(jù),可以為空,不用填 group by?

@Order VARCHAR(200) = '',??? --排序,可以為空,為空默認按主鍵升序排列,不用填 order by?

@RecordCount int OUTPUT???????????? --總記錄數(shù),自己增加(總記錄數(shù))

?AS?

BEGIN? ????

DECLARE @SortColumn VARCHAR(200)? ??

DECLARE @Operator CHAR(2)? ????

DECLARE @SortTable VARCHAR(200)? ????

DECLARE @SortName VARCHAR(200)? ????

IF @Fields = ''? ????????

SET @Fields = '*'? ????

IF @Filter = ''? ????????

SET @Filter = 'Where 1=1'? ????

ELSE? ????????

SET @Filter = 'Where ' +?? @Filter? ????

IF @Group <>''? ????????

SET @Group = 'GROUP BY ' + @Group? ? ????

IF @Order <> ''? ????

BEGIN? ????????

DECLARE @pos1 INT, @pos2 INT? ????????

SET @Order = REPLACE(REPLACE(@Order, ' asc', ' ASC'), ' desc', ' DESC')? ????????

IF CHARINDEX(' DESC', @Order) > 0? ?????

IF CHARINDEX(' ASC', @Order) > 0? ????????????

BEGIN? ????????????????

IF CHARINDEX(' DESC', @Order) < CHARINDEX(' ASC', @Order)? ????????????????????

SET @Operator = '<='? ????????????????

ELSE? ????????????????????

SET @Operator = '>='? ????????????

END? ???????????

? ELSE? ???????????????

? SET @Operator = '<='? ????????

ELSE? ????????????

SET @Operator = '>='? ????????

SET @SortColumn = REPLACE(REPLACE(REPLACE(@Order, ' ASC', ''), ' DESC', ''), ' ', '')? ????????

SET @pos1 = CHARINDEX(',', @SortColumn)????????

? IF @pos1 > 0? ????????????

SET @SortColumn = SUBSTRING(@SortColumn, 1, @pos1-1)? ????????

SET @pos2 = CHARINDEX('.', @SortColumn)? ????????

IF @pos2 > 0? ????????

BEGIN? ????????????

SET @SortTable = SUBSTRING(@SortColumn, 1, @pos2-1)? ????????????

IF @pos1 > 0?? ????????????????

SET @SortName = SUBSTRING(@SortColumn, @pos2+1, @pos1-@pos2-1)? ????????????

ELSE? ????????????????

SET @SortName = SUBSTRING(@SortColumn, @pos2+1, LEN(@SortColumn)-@pos2)? ????????

END? ????????

ELSE? ????????

BEGIN? ????????????

SET @SortTable = @TableNames? ????????????

SET @SortName = @SortColumn? ????????

END? ????

END? ????

ELSE? ????

BEGIN? ????????

SET @SortColumn = @PrimaryKey? ????????

SET @SortTable = @TableNames? ????????

SET @SortName = @SortColumn? ????????

SET @Order = @SortColumn? ????????

SET @Operator = '>='? ????

END? ? ????

DECLARE @type varchar(50)? ????

DECLARE @prec int? ????

Select @type=t.name, @prec=c.prec? ???? FROM sysobjects o?? ???? JOIN syscolumns c on o.id=c.id? ???? JOIN systypes t on c.xusertype=t.xusertype? ???? Where o.name = @SortTable AND c.name = @SortName? ???

? IF CHARINDEX('char', @type) > 0? ????

SET @type = @type + '(' + CAST(@prec AS varchar) + ')'? ? ???

? DECLARE @TopRows INT? ????

SET @TopRows = @PageSize * @CurrentPage + 1? ????

print @TopRows?

print @Operator? ????

EXEC('? ???????? DECLARE @SortColumnBegin ' + @type + '? ???????? SET ROWCOUNT ' + @TopRows + '? ???????? Select @SortColumnBegin=' + @SortColumn + ' FROM?? ' + @TableNames + ' ' + @Filter + ' ' + @Group + ' orDER BY ' + @Order + '? ???????? SET ROWCOUNT ' + @PageSize + '? ???????? Select ' + @Fields + ' FROM?? ' + @TableNames + ' ' + @Filter?? + ' AND ' + @SortColumn + '' + @Operator + '@SortColumnBegin ' + @Group + ' orDER BY ' + @Order + '????? ???? ')????? ?????

IF @RecordCount IS NULL?

BEGIN? ??? DECLARE @sql nvarchar(4000)? ???

SET @sql=N'SELECT @RecordCount=COUNT(*)'? ??????? +N' FROM '+@TableNames ? ??????? +N' '+@Filter ? ???

EXEC sp_executesql @sql,N'@RecordCount int OUTPUT',@RecordCount OUTPUT?

END ? ?

END?

GO

?

(2)實現(xiàn)多表分頁的函數(shù)(c#代碼)

?public static DataTable ExecMultiPageList(string tableName, string iDName, string Fields, int pageSize, int currentPage, string Filter, string Group, string Order, List<SqlParameter> list, out int rowCount)
??????? {
??????????? rowCount = 0;
??????????? SqlConnection connection = new SqlConnection(connectionString);
??????????? SqlParameter[] parameters = {??
??????????????????? new SqlParameter("@TableNames",SqlDbType.VarChar,200),?
??????????????????? new SqlParameter("@PrimaryKey",SqlDbType.VarChar,100),?
??????????????????? new SqlParameter("@Fields",SqlDbType.VarChar,200),?
??????????????????? new SqlParameter("@PageSize",SqlDbType.Int,4),?
??????????????????? new SqlParameter("@CurrentPage",SqlDbType.Int,4),?
??????????????????? new SqlParameter("@Filter",SqlDbType.VarChar,200),?
??????????????????? new SqlParameter("@Group",SqlDbType.VarChar,200),?
??????????????????? new SqlParameter("@Order",SqlDbType.VarChar,200),?
??????????????????? new SqlParameter("@RecordCount",SqlDbType.Int,4)?
??????????????? };//參數(shù)列表?
??????????? parameters[0].Value = tableName;
??????????? parameters[1].Value = iDName;
??????????? parameters[2].Value = Fields;
??????????? parameters[3].Value = pageSize;
??????????? parameters[4].Value = currentPage;
??????????? parameters[5].Value = Filter;
??????????? parameters[6].Value = Group;
??????????? parameters[7].Value = Order;//參數(shù)對應值?
??????????? parameters[8].Value = rowCount;
??????????? parameters[8].Direction = ParameterDirection.Output;
??????????? SqlCommand cmd = new SqlCommand();
??????????? cmd.Connection = connection;
??????????? cmd.CommandText = "usp_PagingLarge";//存儲過程名?
??????????? cmd.CommandType = CommandType.StoredProcedure;//類型?
??????????? cmd.Parameters.AddRange(parameters);
??????????? SqlDataAdapter da = new SqlDataAdapter(cmd);
??????????? DataTable dt = new DataTable();
??????????? da.Fill(dt);
??????????? connection.Close();
??????????? rowCount = Convert.ToInt32(parameters[8].Value);//輸出?
??????????? return dt;
??????? }

?

(3)調用多表分頁的方法

??????? public string GetFenye(out int recordcount, NameValueCollection form,string loginid,int flag) ??????? { ????

??????? QueryModel queryMdodel = QueryModel.getQueryModel(form);

???????? string tablename = "Email_MailSender left join Email_MailInfo on Email_MailSender.mailid=Email_MailInfo.Mailid "; ??????

? ????? string iDName = "Email_MailSender.mailsenderid"; ???????????

?????? ?string Fields = "Email_MailSender.*,Email_MailInfo.mailtopic,Email_MailInfo.sendtime"; ???????????

????????int PageSize = queryMdodel.rows;????????????????????????????? ???????????

?????? ?int PageIndex = queryMdodel.page == 0 ? 0 : queryMdodel.page - 1; ???????????

?????? ?string Filter = "Email_MailSender.senderid = '" + loginid + "' and Email_MailSender.sendstatus ="+flag; ???????????

??????? string group = ""; ???????????

?????? ?string order = "Email_MailSender.mailsenderid asc"; ???????????

???????DataTable dt = DbHelperSQL.ExecMultiPageList(tablename, iDName, Fields, PageSize, PageIndex, Filter, group, order,queryMdodel.listPar ,out recordcount); ???????????

????? ?string strjson = Newtonsoft.Json.JsonConvert.SerializeObject(dt); ??????????? return strjson; ??

????? }

?

?

sqlserver 存儲過程學習筆記(二) 在項目中的應用<多表分頁>


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日日摸日日碰夜夜97 | 2020亚洲欧美日韩在线观看 | 国产a国产 | 欧洲做视频在线观看 | 五月天色区 | 国产成人精品.一二区 | 亚洲欧洲一区二区 | 日日日日日 | 久久春色 | 国产露脸系列magnet | 午夜国产精品理论片久久影院 | 久久久久久久网站 | 婷婷精品进入 | 狠狠久久亚洲欧美专区 | 天天做天天爱天天爽天天综合 | 蜜桃久久久久久久久久久 | 97精品国产综合久久 | 亚洲免费成人 | 日韩欧美黄色片 | 四虎国产精品免费观看 | 久久99热这里只有精品 | a视频在线观看 | 农村寡妇一级毛片免费播放 | 国产剧情自拍 | 国产精品高清久久久久久久 | 免费国产视频在线观看 | 久久6精品 | 亚洲视频黄色 | 影音先锋在线亚洲精品推荐 | 国产成人精品曰本亚洲 | 日韩中文在线 | 五月婷婷丁香在线视频 | 九九免费精品视频在这里 | 真人实干一级毛片aa免费 | www.日韩在线 | 欧美国产亚洲18 | 一道本免费视频 | 不卡一级aaa全黄毛片 | 狠狠色综合久久婷婷色天使 | 尹人在线视频 | 国产成在线人视频免费视频 |