0

11GR2 ……各テーブルの Alter 文を取得し、結果スクリプトを実行して 2 つのテーブルを同じにしたい。しかし、私の結果は以下のようになります。セミコロンと私の結果のように見えますか? 問題は、各テーブルのalterステートメントを作成し、各テーブルの後にターミネーターを置くことだと思います.alterステートメントのそれぞれを置くことではありません; セミカラムターミネータ...アイデアはありますか?

マイコード:

myCommand = "select DBMS_METADATA_DIFF.COMPARE_ALTER('TABLE','GM_X','GM_X','SCOTT','GARY') from dual";

    using (OracleCommand Command = new OracleCommand(myCommand, conn1))
   {
     using (OracleDataReader reader = Command.ExecuteReader())
   {
     reader.Read();
     string[] split = reader[0].ToString().Trim().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);

 foreach (string line in split)
   {
      RichTextBox1.AppendText(reader[0].ToString().Trim() + ";" + Environment.NewLine);
   }

結果;

ALTER TABLE " TABLE_NAME_1" MODIFY ("INVH" VARCHAR2(15));
ALTER TABLE " TABLE_NAME_2" MODIFY ("REODE" VARCHAR2(15));
ALTER TABLE " TABLE_NAME_3" MODIFY ("CUST" NOT NULL ENABLE)
  ALTER TABLE " TABLE_NAME_3" MODIFY ("CODE" VARCHAR2(14))
  ALTER TABLE " TABLE_NAME_3" MODIFY ("CODE" NOT NULL ENABLE)
  ALTER TABLE " TABLE_NAME_3" MODIFY ("E_CODE" NOT NULL ENABLE)
  ALTER TABLE " TABLE_NAME_3" MODIFY ("_GR2" NOT NULL ENABLE);

この結果が欲しい:

 ALTER TABLE " TABLE_NAME_1" MODIFY ("INVH" VARCHAR2(15));
    ALTER TABLE " TABLE_NAME_2" MODIFY ("REODE" VARCHAR2(15));
    ALTER TABLE " TABLE_NAME_3" MODIFY ("CUST" NOT NULL ENABLE);
      ALTER TABLE " TABLE_NAME_3" MODIFY ("CODE" VARCHAR2(14));
      ALTER TABLE " TABLE_NAME_3" MODIFY ("CODE" NOT NULL ENABLE);
      ALTER TABLE " TABLE_NAME_3" MODIFY ("E_CODE" NOT NULL ENABLE);
      ALTER TABLE " TABLE_NAME_3" MODIFY ("_GR2" NOT NULL ENABLE);
4

1 に答える 1

0

foreach ではsplit、 という文字列を使用して各要素を反復処理しますline。あなたのコードはそれをしません:

   foreach (string line in split)
   {
      RichTextBox1.AppendText(reader[0].ToString().Trim() + ";" + Environment.NewLine);
   }

各反復で分割から取得したばかりの行を使用していません。あなたはこれを求めている:

   foreach (string line in split)
   {
      RichTextBox1.AppendText(line + ";" + Environment.NewLine);
   }

\nに置き換えるだけであれば、行要素を反復処理する必要さえありません;\n

string alterTableStatements = reader[0].ToString().Trim().Replace("\n", ";\n");
于 2013-10-02T14:31:30.857 に答える