この問題の主な理由は、結合された SQL ステートメントが長すぎることです
一般的に言えば、Oracle の SQL 実行ステートメントは英語で 4000 文字、中国語で 2000 文字を超えることはできないため、Clob フィールドの内容が大きくなると、 , 結合された SQL
の長さが長すぎるため、問題が発生します。
より簡単な解決策は、パラメータ化された query を使用して 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 サイトの他の関連記事を参照してください。