이 문제가 발생하는 이유는 주로 스플라이싱된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!