Процедура автоматического удаления старых строк, оставляющих нижние 100 строк (сначала в порядке вывода) при загрузке данных из scada в sql

Как сделать первым пришел первым в 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

1 ответ

Вы должны разобраться в логике.... попробуйте использовать традиционные методы - работать на бумаге, а затем реализовать.

Еще одно предложение - если вы удаляете слишком много строк, чем используете больший размер пакета, в противном случае журналы транзакций будут заполнены.

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; 
Другие вопросы по тегам