ORA-01084: OCI 調用中的參數無效 的解決方法


oracle的數據類型如果為NCLOB,當在C#當中三層架構使用參數形式的話,如果插入空值或空字符串就會出現“ORA-01084: OCI 調用中的參數無效”的錯誤,之前在網上看到別人都說用“ ”(也就是空格)代替空值或者空字符串,但是我是一個糾結體,一直覺得這樣不好,雖然之前有個項目也是這樣做,但今天發現了一種更好的解決方法,就是用DBNULL.value。如下:

/// <summary>
        /// 增加一條數據
        /// </summary>
        public void Add(top.Model.KK model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into KK(");
            strSql.Append("ID,NAME)");
            strSql.Append(" values (");
            strSql.Append(":ID,:NAME)");
            OracleParameter[] parameters = {
                    new OracleParameter(":ID", OracleType.Number,4),
                    new OracleParameter(":NAME", OracleType.NClob,4000)};
            parameters[0].Value = model.ID;
            if (String.IsNullOrEmpty(model.NAME))
            {
                parameters[1].Value = DBNull.Value;
            }
            else
            {
                parameters[1].Value = model.NAME;
            }
            

            DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM