2011-05-27 82 views
0

我試圖從vb.net中的sys.tables中例行刪除特定表。這裏是代碼,但它不起作用。如何在sql server中刪除多個表,如%...%

Try 
    Dim MyCommand As New Odbc.OdbcCommand("", MyConnection) 
    MyCommand.CommandText = "drop from sys.tables where tabname like '% " & span & "%'" 
    Dim result As Integer = MyCommand.ExecuteNonQuery 
    MyCommand.Dispose() 
Catch ex As Exception 
End Try 

回答

1

請不要試圖更改sysviews數據。他們是爲了您的信息。您通過執行DDL命令來更改該數據。

在你的情況下,你需要每個表DROP TABLE tablename
可以使用sys.tables來得到一個表執行DROP的列表,但是DROP必須是單獨的命令。

而且,這是很好過得慣正確的Dispose模式:

Using MyCommand As New Odbc.OdbcCommand("drop table foo;", MyConnection) 
    MyCommand.ExecuteNonQuery() 
End Using 
+0

@GSerf @gbn @Philippe好吧,我會通過他們周圍改變我的代碼來獲取表名,然後循環,並通過一個拖放一個。謝謝。 – TroyS 2011-05-27 17:16:22

1

中循環,並明確地發出一個刪除表。

您可以使用DROP TABLE調用將其批量調入單個調用。

編輯:

另外也dbo.xp_execresultset可能生成它。我不知道它是否仍然在SQL Server 2005中,說實話。這是無證的,所以YMMV

1

你應該瀏覽sys.tables並找到所有對應於你的搜索的表。你會那麼,對於他們中的每一個,發送下面的指令:

MyCommand.commandText = "Drop Table '" & tableName & "'"