在teradata下降表

时间:2012-10-01 05:54:04

标签: 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数据库] [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();

2 个答案:

答案 0 :(得分:0)

你可以尝试

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

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

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

答案 1 :(得分:0)

使用

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