【问题标题】:How to drop multiple tables like %...% in sql server如何在 sql server 中删除多个表,如 %...%
【发布时间】:2011-09-03 13:47:16
【问题描述】:

我正在尝试定期从 vb.net 中的 sys.tables 中删除特定表。这是代码,但它不起作用。

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

【问题讨论】:

    标签: sql vb.net visual-studio


    【解决方案1】:

    请不要尝试更改 sysviews 数据。它们是供您参考的。您可以通过执行 DDL 命令来更改该数据。

    在您的情况下,每张桌子需要一个 DROP TABLE tablename
    可以使用 sys.tables 获取要执行 DROP 的表列表,但 DROPs 必须是单独的命令。

    另外,让自己习惯正确的 Dispose 模式也很好:

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

    【讨论】:

    • @GSerf @gbn @Philippe 好的,我将更改我的代码以获取表名,然后遍历它们并一一删除。谢谢。
    【解决方案2】:

    必须明确地循环和发出单个 DROP TABLE。

    您可以通过可能的 DROP TABLE 调用将其批处理为一个调用。

    编辑:

    还有 dbo.xp_execresultset 可以为您生成它。老实说,我不知道它是否仍在 SQL Server 2005 中。这是无证的,所以 YMMV

    【讨论】:

      【解决方案3】:

      您应该浏览 sys.tables 并找到与您的搜索相对应的所有表。然后,您将为每个人发送以下说明:

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

      【讨论】:

        猜你喜欢
        • 2011-07-04
        • 2010-10-21
        • 1970-01-01
        • 2014-05-19
        • 2023-03-04
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        相关资源
        最近更新 更多