存储过程中的多个删除操作

时间:2011-12-12 16:40:10

标签: sql sql-server stored-procedures

如果存储过程运行但我不能这样做,我想让一些表为空。我做的是

create proc MakeEmpty   ()
as
begin
  delete from table1
  delete from table2
 delete from table3
end

3 个答案:

答案 0 :(得分:4)

两件事:

1 - 只有在声明过程参数时才应使用这些括号。如果没有参数,则不需要它们。

2 - 如果要清空表,则应使用TRUNCATE - 它的记录最少,基本上是元操作而不是逐行删除。

你需要澄清什么不起作用,但这样的事情应该可以解决问题:

BEGIN

IF EXISTS (SELECT 1 from DatabaseName.sys.Tables WHERE Name = 'Table1')
TRUNCATE TABLE Databasename.dbo.Table1

...repeat for other tables...

END

答案 1 :(得分:4)

改为使用truncate并删除(),如下所示:

create proc MakeEmpty
as
begin
    truncate table table1
    truncate table table2
    truncate table table3
end

答案 2 :(得分:3)

尝试删除()

create proc MakeEmpty
as
begin
   delete from table1;
   delete from table2;
   delete from table3;
end

但请确保table2table3未引用table1table3未引用table2