簡單描述Oracle Clob類型
Oracle還是比較常用的,于是我研究了一下Oracle Clob類型,在這里拿出來和大家分享一下,希望對大家有用。Oracle Clob類型處理解析最近利用NHibernate映射類型為Clob字段在插入數(shù)據(jù)時發(fā)現(xiàn)當(dāng)字符的字節(jié)數(shù)(一個半角字符一個字節(jié),一個全角字符兩個字節(jié))在 2000-4000之間時報錯(ORA-01461:僅可以插入LONG列的LONG值賦值)。Oracle Clob類型方式1:直接將CLOB的值拼寫在SQL語句中。代碼:
- string id = Guid.NewGuid().ToString();
- OracleCommand cmd = Conn.CreateCommand();
- cmd.CommandText = "insert into xx(id,test) values('" + id + "','" + data + "')";
- // data是一個變量,存儲你要插入的字符串
- cmd.ExecuteNonQuery();
情況分析:當(dāng)data的長度大于4000時報錯(ORA-01704:文字字符串過長),小于或等于4000時正常插入。
原因分析:之所以會出現(xiàn)長度大于4000時報錯,是因為Oracle中有SQL語句中兩個單引號之間的字符數(shù)不能大于4000的限制。'" + data + "' data在sql語句之間,當(dāng)data的值大于4000個字節(jié)時就會報錯。
解決辦法:這種方式比較棘手,但有更好的方式,下邊會講到 。
Oracle Clob類型方式2:采用參數(shù)形式。代碼:
- string id = Guid.NewGuid().ToString();
- OracleCommand cmd = Conn.CreateCommand();
- cmd.CommandText = "insert into xx(id,test) values('" + id + "','" + data + "')";
- // data是一個變量,存儲你要插入的字符串
- cmd.ExecuteNonQuery();
情況分析:采用這種方式能夠正常插入。所以推薦用這種方式。
原因分析:無
解決辦法:無
【編輯推薦】