C# teradata中的Drop表
我试图用C在Teradata数据库中删除一个表(如果该表存在)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]
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'关键字之间应该有一些内容。}我已经编辑了我的帖子。我添加的第二个解决方案有效!!但如果没有表,则失败。当表不存在时,如何防止上述操作不失败?