C# teradata中的Drop表

C# teradata中的Drop表,c#,teradata,C#,Teradata,我试图用C在Teradata数据库中删除一个表(如果该表存在) cmd.CommandText = string.Format("IF EXISTS (SELECT * FROM sysobjects WHERE type = 'U' AND name = '{0}') BEGIN DROP TABLE '{0}' END", Customer.TableName); cmd.ExecuteNonQuery(); 但上述措施总是失败: {[Teradata Database]

我试图用C在Teradata数据库中删除一个表(如果该表存在)

cmd.CommandText = string.Format("IF EXISTS
(SELECT * FROM sysobjects WHERE type = 'U' AND name = '{0}')  
     BEGIN DROP TABLE '{0}' END", Customer.TableName);  
cmd.ExecuteNonQuery();
但上述措施总是失败:


{[Teradata Database][3706]语法错误:请求的开头和'IF'关键字之间应存在某些内容。}

我试过的第二个代码,下面的代码有效

cmd.CommandText = "select count (*) from Customer.TableName";
                    reader = cmd.ExecuteReader();

                    if (reader.FieldCount > 0)
                    {
                        reader.Close();
                        cmd.CommandText = "Drop table Customer.TableName";
                        reader = cmd.ExecuteReader();
                    }
然而,它只在GET表存在时工作。如果表Customer.TableName不存在,则执行此操作时将失败

"select count (*) from Customer.TableName";
                        reader = cmd.ExecuteReader();
你可以试试

IF EXISTS(SELECT 1 FROM dbc.tables WHERE databasename = db_name 
AND tablename = table_name) THEN DROP TABLE table_name
首先在编辑器中尝试此操作,然后将其放入.NETC代码中

这将确保表的存在,如果它存在,它将删除它。

已使用它

"select count(*) from DBC.TABLES WHERE TABLENAME ='" + table.Split('.')[1] + "' and DatabaseName = '" + databasename+ "'"

对不起,它不起作用。如果我只是从dbc.tables运行select1,其中databasename='John'和tablename='ctry',那么它将返回一些数据。但是当我应用IF EXISTS then drop表'ctry'{[Teradata Database][3706]语法错误时失败了:请求的开头和'IF'关键字之间应该有一些内容。}我已经编辑了我的帖子。我添加的第二个解决方案有效!!但如果没有表,则失败。当表不存在时,如何防止上述操作不失败?