如果存储过程运行但我不能这样做,我想让一些表为空。我做的是
create proc MakeEmpty ()
as
begin
delete from table1
delete from table2
delete from table3
end
答案 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
但请确保table2
和table3
未引用table1
且table3
未引用table2