如何在循环中保持增加Sql Server偏移量

编程入门 行业动态 更新时间:2024-10-27 12:27:29
本文介绍了如何在循环中保持增加Sql Server偏移量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

Hello Everyone, i我正在开发一个项目,需要我使用sFS server 2012的OFFSET和FETCH NEXT关键字,这对我来说很新,我希望能够增加OFFSET以便我可以批量获取记录,下面是我的代码:

Hello Everyone, i am working on a project that requires me to use OFFSET and FETCH NEXT Keyword of the sql server 2012, this is pretty new to me, i want to be able to increment the OFFSET so i could fetch records in batches, below is my code:

private static void EdmsLands() { var catid = ""; var strCon = ConfigurationManager.ConnectionStrings["edms"].ConnectionString; try { SqlDataReader rder = null; using ( var connection = new SqlConnection( strCon ) ) { var command = new SqlCommand( "select top 1 catid from csowner.CatRegionMap where CatName = 'lands'", connection ); command.CommandType = CommandType.Text; connection.Open( ); rder = command.ExecuteReader( ); while ( rder.Read( ) ) { catid = ( rder["catid"].ToString( ) ); } } rder.Close( ); rder.Dispose( ); } catch ( Exception ex ) { MessageBox.Show( ex.Message ); } try { using ( var connection = new SqlConnection( strCon ) ) { var listAttributeRegion = new List<long>( ); SqlDataReader reader = null; const string squery = "SELECT id from csowner.LLAttrData join csowner.dtree d on ID = d.DataID join csowner.DVersData dv on d.VersionNum = dv.Version and d.DataID = dv.DocID where AttrType = -18 and DefID = @DefId and LLAttrData.VerNum = dv.Version ORDER BY id ASC OFFSET (@OFFSET-@ROWSIZE) + @ROWSIZE ROWS FETCH NEXT @ROWSIZE ROWS ONLY"; var command = new SqlCommand( squery, connection ); command.CommandType = CommandType.Text; connection.Open( ); command.Parameters.Add( "@DefID", SqlDbType.Int ).Value = catid; command.Parameters.Add( "@OFFSET", SqlDbType.Int ).Value = 0; command.Parameters.Add( "@ROWSIZE", SqlDbType.Int ).Value = 15; reader = command.ExecuteReader( ); while ( reader.Read( ) ) { listAttributeRegion.Add( Convert.ToInt64( reader["id"].ToString( ) ) ); } var cdAttrlist = new List<CDocumentAttr>( ); foreach ( long k in listAttributeRegion ) { var dataId = k; const string sqlquery = "Select l.AttrID , l.ValStr from csowner.LLAttrData l join csowner.dtree d on ID = d.DataID join csowner.DVersData dv on d.VersionNum = dv.Version and d.DataID = dv.DocID where d.DataID =@DataID and l.VerNum = dv.Version"; using ( var con = new SqlConnection( strCon ) ) { using ( var com = new SqlCommand( sqlquery, con ) ) { com.CommandType = CommandType.Text; con.Open( ); com.Parameters.Add( "@DataID", SqlDbType.Int ).Value = dataId; SqlDataReader rdr = com.ExecuteReader( ); var cdAttr = new CDocumentAttr( ); Int64 count = 0; Int64 attrId = 0; while ( rdr.Read( ) ) { attrId = Convert.ToInt64( rdr["AttrID"].ToString( ) ); var value = rdr["ValStr"].ToString( ); count = attrId; //var value = rdr.IsDBNull( 1 ) ? "" : rdr.GetString( 1 ); switch ( count ) { case 3: cdAttr.Lga = value; break; case 4: cdAttr.Area = value; break; case 6: cdAttr.CofO = value; break; case 7: cdAttr.RegistrationNumber = value; break; case 8: cdAttr.ApplicantName = value; break; case 10: cdAttr.Location = value; break; case 12: cdAttr.Grantor = value; break; case 13: cdAttr.Grantee = value; break; case 14: if (string.Equals(value, DocumentTypeEnum.Commercial.ToString(), StringComparison.OrdinalIgnoreCase)) cdAttr.LandPurpose = DocumentTypeEnum.Commercial; else cdAttr.LandPurpose = DocumentTypeEnum.Residential; break; case 15: cdAttr.ApplicationType = value; break; case 16: //DateTime appDate = DateTime.ParseExact( value, "dd MM yyyy", CultureInfo.InvariantCulture ); //cdAttr.ApplicationDate = appDate; break; } count++; } cdAttrlist.Add( cdAttr ); } } } reader.Close( ); reader.Dispose(); var postData = new DataImportClient( ); postData.postDocumentAttribute(cdAttrlist.ToArray()); } } catch ( SqlException ex ) { var w = ex.Message; } }

来自代码,第一次传递取0-15条记录,我想能够循环它,以便第二次传递将从16-30记录中取出,请问我该如何实现?任何协助将不胜感激。在此先感谢。

from the code, the first pass fetches 0-15 records, i want to able to loop it so that the second pass will fetch from 16-30 records, Please how do i achieve this? any assistance will be appreciated. Thanks in advance.

推荐答案

更多推荐

如何在循环中保持增加Sql Server偏移量

本文发布于:2023-11-06 17:48:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1564378.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:偏移量   如何在   Sql   Server

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!