Mysql 在块中轮询数据

Mysql 在块中轮询数据,mysql,sql,sql-server,tsql,stored-procedures,Mysql,Sql,Sql Server,Tsql,Stored Procedures,我有如下的存储过程 CREATE procedure [dbo].[Poll_EDI834_5010] AS BEGIN select Header.ST01, Header.ST02, Header.ST03 , Header.SE02, Line.INS01__InsuredIndicator , Line.PER04__CommunicationNumber , Line.PER05_CommunicationNumberQual

我有如下的存储过程

CREATE procedure [dbo].[Poll_EDI834_5010]
AS
BEGIN
select
    Header.ST01,
    Header.ST02,
    Header.ST03 ,
    Header.SE02,
    Line.INS01__InsuredIndicator ,
    Line.PER04__CommunicationNumber ,
      Line.PER05_CommunicationNumberQualifier ,
      Line.DMG06_CitizenshipStatusCode ,
         (select Member_Ref.REF01_ReferenceIdentificationQualifier ,Member_Ref.REF02_MemberSupplementalIdentifier
   from EDI834_5010_2000_RefLoop Member_Ref        
   where Member_Ref.Id_Header = Header.BGN02__TransactionSetIdentifierCode
   and Member_Ref.Id_Loop2000 = Line.Member_Id         
   for xml auto, elements, type) ,
    (select Member_DTP.DTP01_DateTimeQualifier , Member_DTP.DTP02_DateTimePeriodFormatQualifier , Member_DTP.DTP03_StatusInformationEffectiveDate
   from EDI834_5010_2000DTP Member_DTP        
   where Member_DTP.Header_Id = Header.BGN02__TransactionSetIdentifierCode
   and Member_DTP.Member_Id = Line.Member_Id         
   for xml auto, elements, type) ,
   VLine.HD01_MaintenanceTypeCode,
   VLine.HD03_InsuranceLineCode ,
    VLine.N402_ProviderStateCode ,
   VLine.N403_ProviderPostalZoneorZIPCode ,
      (select ClaimDTP.DTP01__DateTimeQualifier , ClaimDTP.DTP02__DateTimePeriodFormatQualifier , ClaimDTP.DTP03__StatusInformationEffectiveDate
     from EDI834_5010_2300_DTPLoop ClaimDTP
     where ClaimDTP.Id_Header = Header.BGN02__TransactionSetIdentifierCode
     and ClaimDTP.Id_Loop2000 = Line.Member_Id
     and ClaimDTP.Id_Loop2300 = VLine.Id_Claim
     for xml auto, elements, type)
from EDI834_5010_Header Header 
join EDI834_5010_2000 Line  on Header.BGN02__TransactionSetIdentifierCode = Line.Header_Id
join EDI834_5010_2300Loop VLine on Header.BGN02__TransactionSetIdentifierCode = VLine.Id_Header_Id andVLine.Id_Loop2000=Line.Member_Id
for xml auto,ELEMENTS
END
GO

它大约有10万张唱片。我需要将数据分块获取。比如先10000,然后再10000…我需要在存储过程中更改什么以获得数据块。

在数据中需要某种索引、序列列或可排序ID列。让我们称之为keyColumn。然后,您需要将可能的最大行数拆分为每次迭代所需的行数。我不知道你的模式,所以让我们像你在问题中说的那样使用10000行

然后,您需要在每次迭代中选择尽可能多的行并执行。。。不管你想做什么

SELECT @minID = Min(keyColumn) FROM table WHERE condition
SELECT @maxID = Max(keyColumn) FROM table WHERE condition
SELECT @potentialRows = 10000

WHILE @minID < @maxID
BEGIN
    SET @breakID = @minID + @potentialRows
    SELECT columns FROM table WITH (NOLOCK, ...)
    WHERE condition AND keyColumn BETWEEN @minID AND @breakID

    -- Do what you want with the selected rows here...

    SET @minID = @breakID + 1
END

如果keyColumn值稀疏,则必须更改潜在行计算。

这是MySql还是SQL Server?FOR语句不是有效的TSQL。您必须发布代码和错误消息;我看不到你的屏幕。