0

如果表存在,我尝试使用 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();
                    }

但是,它仅在获得表存在时才有效。如果表 Customer.TableName 不存在,则执行此操作将失败

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

2 回答 2

0

得到它的工作

"select count(*) from DBC.TABLES WHERE TABLENAME ='" + table.Split('.')[1] + "' and DatabaseName = '" + databasename+ "'"
于 2012-10-01T07:07:18.027 回答
0

你可以试试

IF EXISTS(SELECT 1 FROM dbc.tables WHERE databasename = db_name 
AND tablename = table_name) THEN DROP TABLE table_name

首先在编辑器中尝试此操作,然后放入您的 .net c# 代码中。

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

于 2012-10-01T06:03:32.297 回答