Процедура автоматического удаления старых строк, оставляющих нижние 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;