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' キーワードの間に何かが必要です。"}

私が試した2番目のコード、以下のコードが機能します!!!

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

あなたが試すことができます

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 に答える
0

で動作しました

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