Sql server 如何将6个月或6个月以上的数据移动到另一个表中?

Sql server 如何将6个月或6个月以上的数据移动到另一个表中?,sql-server,stored-procedures,Sql Server,Stored Procedures,我编写了一个简单的过程来获取6个月或6个月以上的数据并将它们存储在另一个表中 Create PROCEDURE Proc_move_tabcustomers AS BEGIN INSERT INTO sample_table_archive(name,age,dob) SELECT name,age,dob FROM sample_table WHERE dob <= dateadd(month, -6, getdate()); DELETE

我编写了一个简单的过程来获取6个月或6个月以上的数据并将它们存储在另一个表中

    Create  PROCEDURE Proc_move_tabcustomers

    AS
    BEGIN
    INSERT INTO sample_table_archive(name,age,dob) SELECT name,age,dob FROM sample_table WHERE dob <= dateadd(month, -6, getdate());

    DELETE FROM sample_table where dob <= dateadd(month, -6, getdate());
    END

我想知道它是否正确。

这很正常,但使用事务更安全

BEGIN TRY
  -- start transaction
  BEGIN TRAN

  -- group commands of data modification
  DECLARE @dob date=dateadd(month, -6, getdate()); -- auxiliary variable

  INSERT INTO sample_table_archive(name,age,dob) SELECT name,age,dob FROM sample_table WHERE dob <= @dob;

  DELETE FROM sample_table where dob <= @dob;

  -- save changes
  COMMIT TRAN
END TRY
BEGIN CATCH
  PRINT 'An error has occurred. Transaction canceled'
  -- cancel changes
  ROLLBACK TRAN
END CATCH

正确…….sql server或oracle?oracle没有dateadd,因此这必须是sql server。如果您有大量的行,您可能希望查看delete+输出,以便能够更轻松地成批执行。sql server@KaushikNayakoh,我有125000条记录。没有批处理会更好吗@JamesZI我是初学者,所以我不知道sp中有辅助变量。非常感谢@Leran2002