ホームページ  >  記事  >  バックエンド開発  >  Oracle Clobフィールドの保存が長すぎる問題を解決するにはどうすればよいですか?

Oracle Clobフィールドの保存が長すぎる問題を解決するにはどうすればよいですか?

零下一度
零下一度オリジナル
2018-05-26 16:02:143428ブラウズ

この問題の主な理由は、結合された SQL ステートメントが長すぎることです

一般的に言えば、Oracle の SQL 実行ステートメントは英語で 4000 文字、中国語で 2000 文字を超えることはできないため、Clob フィールドの内容が大きくなると、 , 結合された SQL

の長さが長すぎるため、問題が発生します。

より簡単な解決策は、パラメータ化された qu​​ery を使用して SQL ステートメントを実行することです。サンプルコードは次のとおりです

OracleConnection Con = new System.Data.OracleClient.OracleConnection(connectStr);
           try
           {
decimal MsgId = 20;
               string InsertSql = @"insert into MSG
                                 (ID, TITLE, CONTENT, SORT, TIME, AUTHOR, GROUP)
                               values
                                 (:ID,
                                  :TITLE,
                                  :CONTENT,
                                  :SORT,
                                  :TIME,
                                  :AUTHOR,
                                  :GROUP)";
Con.Open();
               OracleCommand cmd = new OracleCommand(InsertSql, Con);
               OracleParameter TITLE = new OracleParameter("TITLE", OracleType.NVarChar);
               OracleParameter CONTENT = new OracleParameter("CONTENT", OracleType.Clob);
               OracleParameter GID = new OracleParameter("GID", OracleType.NVarChar);
               OracleParameter SORT = new OracleParameter("SORT", OracleType.Number);
               OracleParameter TIME = new OracleParameter("TIME", OracleType.DateTime);
               OracleParameter AUTHOR = new OracleParameter("AUTHOR", OracleType.NVarChar);
               OracleParameter GROUP = new OracleParameter("GROUP", OracleType.NVarChar);
TITLE.Value = Model.MsgTitle;
CONTENT.Value = Model.MsgContent;
ID.Value = Guid.NewGuid().ToString();
SORT.Value = MsgId;
TIME.Value = DateTime.Now;
AUTHOR.Value = Model.MsgAuthor;
GROUP.Value = Model.GroupId;
               cmd.Parameters.Add(MSGTITLE);
               cmd.Parameters.Add(MSGCONTENT);
               cmd.Parameters.Add(MSGID);
               cmd.Parameters.Add(MSGSORT);
               cmd.Parameters.Add(MSGTIME);
               cmd.Parameters.Add(MSGAUTHOR);
               cmd.Parameters.Add(MGSGROUP);
               cmd.ExecuteNonQuery();
               Con.Close();

           }
           catch (Exception ex)
           {

           }

以上がOracle Clobフィールドの保存が長すぎる問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。