0

SQL Server 2008中如何做到先进先出

USE [TEST2]
GO
/****** Object:  StoredProcedure [dbo].[usp_chartData8]    Script Date: 05/24/2010 14:30:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[usp_chartData8]
As
begin
declare @rowcount as integer
declare @deletecount as integer
declare @Totalrows as integer
set @Totalrows=10
select @rowcount=count (*) from tblBarcode;
IF (@rowcount > @Totalrows)
begin
select @deletecount=@rowcount-@Totalrows
print @Totalrows
print @rowcount
print @deletecount
delete top (@deletecount) from tblBarcode
End
End
--select * from tblBarcode
--EXEC usp_chartData8

当我运行它时,它只显示 10 行我想从 SCADA 自动更新到 SQL

4

1 回答 1

0

您需要了解逻辑......尝试使用传统方法 - 在纸上工作然后实施。

另一个建议 - 如果您删除的行太多而不是使用更大的批量大小,否则事务日志将被填满。

USE [TEST2];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[usp_chartData8]
AS
     BEGIN
         DECLARE @rowcount AS INTEGER;
         DECLARE @deletecount AS INTEGER;
         DECLARE @Totalrows AS INTEGER;
         SET @Totalrows = 10;
         SELECT @Totalrows = COUNT(*) -- Changed from @rowcount
         FROM tblBarcode;
         IF(@Totalrows > @rowcount ) -- Changed
             BEGIN
                 SELECT @deletecount = @Totalrows - @rowcount; -- Changed
                 PRINT @Totalrows;
                 PRINT @rowcount;
                 PRINT @deletecount;
                 DELETE TOP (@deletecount)
                 FROM tblBarcode;
             END;
     END; 
于 2016-08-16T12:26:17.500 回答