如果表存在,我尝试使用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();
答案 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+ "'"