Удалить таблицу в терадата

Я попытался удалить таблицу в базе данных 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();

person VeecoTech    schedule 01.10.2012    source источник


Ответы (2)


Можешь попробовать

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

Сначала попробуйте это в редакторе, а затем поместите в свой код .net С#.

Это обеспечит существование таблицы, и если она существует, она удалит ее.

person Jigar Pandya    schedule 01.10.2012
comment
Извините, это не сработало. если я просто запускаю SELECT 1 FROM dbc.tables WHERE databasename = 'John' AND tablename = 'ctry', то он возвращает некоторые данные. Но это не удалось, когда я применяю IF EXISTS(), а затем удаляю таблицу 'ctry' - person VeecoTech; 01.10.2012
comment
{[База данных Teradata] [3706] Синтаксическая ошибка: ожидалось что-то между началом запроса и ключевым словом "IF".} - person VeecoTech; 01.10.2012
comment
Я отредактировал свой пост. Второе решение, которое я добавил, работает! но это не удалось, если у него нет таблицы. - person VeecoTech; 01.10.2012
comment
Как предотвратить сбой вышеизложенного, когда таблица не существует? - person VeecoTech; 01.10.2012

Получил работу с

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