예제 #1
0
        public bool update(string person_id)
        {
            string sql = string.Format(sql_update, OBJECT_ID, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();

            return(true);
        }
예제 #2
0
        private bool _update(string person_id)
        {
            // 자아..
            // 업데이트 문법 만들어주기..
            // 이거는 내부 함수이다..
            // 실제 데이터를 넣어 주기 위한 것이고..
            // 고정된 값에 대해서는 업데이트 등을 해주지 않는다..
            // insert 또는 update 를 통해서 초기 값 또는 이력을 만든 이후..
            // 이놈을 통해서 실제 값을 업데이트 하도록 하자..

            // 자아.. 기본적으로는 다음과 같다.. {2} 번에 해당하는 값만 만들어주면 된다..
            string sql_update = "UPDATE " + __TABLE_NAME__ + " SET UPDATE_DATE = TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), UPDATOR_ID = '{1}' {2} WHERE OBJECT_ID = '{0}'";


            string update_str = "";

            for (int i = 0; i < COLUMN_NAME.Length; i++)
            {
                if (FIXED_COLUMNS.Contains(COLUMN_NAME[i]))
                {
                    continue;                                           // FIXED에 있으면 무시..
                }
                string value = COLUMNS[COLUMN_NAME[i]];

                if (value == "")
                {
                    continue;
                }
                // "" 인 경우는 무시하자.. null 이 들어 갈수 있을지 모르겠는데..
                // 값을 지우려면 null 을 넣어주어야 할듯..

                if (value == null)
                {
                    value = "";
                }

                update_str += "," + COLUMN_NAME[i] + "='" + COLUMNS[COLUMN_NAME[i]] + "'";
                //res += "'" + COLUMN_NAME[i] + "':'" + COLUMNS[COLUMN_NAME[i]] + "'";
            }

            if ("".Equals(update_str))      // 변경할게 없으면 리턴.. .. 진짜 그런가..??
            {
                return(false);
            }


            string sql = string.Format(sql_update, OBJECT_ID, person_id, update_str);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();

            return(true);
        }
예제 #3
0
        public bool delete(string person_id)
        {
            if (OBJECT_ID == null || "".Equals(OBJECT_ID))
            {
                return(false);
            }

            string sql = string.Format(sql_delete, OBJECT_ID);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();
            return(true);
        }
예제 #4
0
        public bool insert(string person_id, string parent_id)
        {
            // 자아.. INSERT..
            // 그나마 복잡한게 INSERT라고 보면 된다..
            // 우선 CLS코드를 직접 구해줘야만 하고..
            // 그에 맞는 ORDER도 만들어주어야 한다..
            // 그외에는 머.. 별겨 없다..

            if (parent_id == null || "".Equals(parent_id))
            {
                parent_id = "0";
            }

            OraDB DB = new OraDB();

            try
            {
                string           sql_getCls = "SELECT PARENTCODE || CHILDCODE RES, CHILDCODE FROM ( SELECT (SELECT CLASSIFICATION_CODE CLASSIFICATION_CODE FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) PARENTCODE, CHILDCODE FROM  (SELECT SUBSTR( CHILDCODE, LENGTH(CHILDCODE)-4 ) CHILDCODE FROM (SELECT MAX( B.CLASSIFICATION_CODE ) PARENTCODE, '0000000' || ( NVL( SUBSTR( MAX(A.CLASSIFICATION_CODE), LENGTH( NVL( MAX( B.CLASSIFICATION_CODE ), 0 )  ) + 1 ), 0 ) + 1 ) CHILDCODE FROM TB_OBJECT_CLASSIFICATION A, (SELECT MAX(CLASSIFICATION_CODE) CLASSIFICATION_CODE, COUNT(*) CNT FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) B WHERE A.CLASSIFICATION_CODE LIKE B.CLASSIFICATION_CODE || '_____' ) ))";
                OracleDataReader rd         = DB.ExecuteQuery(String.Format(sql_getCls, parent_id));
                try
                {
                    if (rd.HasRows)
                    {
                        rd.Read();
                        CLASSIFICATION_CODE = rd["RES"].ToString();
                        CATE_ORDER          = rd["CHILDCODE"].ToString();
                    }
                    else
                    {
                        return(false);
                    }
                }
                finally
                {
                    if (rd != null)
                    {
                        rd.Close();
                    }
                    rd = null;
                }
                string sql = string.Format(sql_insert, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR);
                DB.Execute(sql);
            }
            finally
            {
                DB.Close();
            }
            return(true);
        }
예제 #5
0
        public bool insert(string person_id, string parent_id)
        {
            //private string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " VALUES ( " + __SEQUENCE_NAME__ + ".nextval, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', '{2}', '{3}', '{4}', 'S', '{5}' )";

            // insert 를 해주는 것인데..
            // 일단은 최소한의 값으로 값을 insert 해주면 된다.. ( row )
            // 그 이후 _update 를 호출 하자..
            // 자아.. 일단.. insert, update 시에는 FIXED COLUMN 항목들에 대해서는 별도로 처리를 해줄수 있도록 하자..


            string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL";
            // 자아.. 사실은.. INSERT 에서 NEXTVAL 을 여러개를 써도 하나로 처리가 된다..
            // 하지만.. INSERT 한 이후에 UPDATE를 해줘야 하는데.. 어차피 OBJECT_ID 를 알아야 하기 때문에..
            // 그냥 따로 빼서 사용하도록 하자..
            // 최초로 만드는 것이기 때문에 OBJECT_ID 와 MASTER_ID 는 동일..
            // VERSION 은 0 으로 설정이 된다..
            // owner에 대해서는 조금 생각을 해줘야 할것 같기는 한데..
            // 일단은.. 나중에 팀코드를 넣어주어야 할것 같기도 하다..
            string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS ) VALUES ( '{1}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', 0, 'W' )";

            OraDB DB = new OraDB();

            string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader)
            {
                string val = reader[0].ToString();
                return(val);
            });


            if (object_id != null && !"".Equals(object_id))
            {
                // 일단은 신규 object_id 를 가져왔으면..
                string sql = string.Format(sql_insert, person_id, object_id);
                DB.Execute(sql);

                COLUMNS["CATE_PCODE"] = parent_id;
                this.OBJECT_ID        = object_id; // 자아.. 일단 값을 넣고..
                // 마지막으로 실제 업데이트..
                _update(person_id);
            }
            DB.Close();

            return(true);
        }
예제 #6
0
        public bool delete(string person_id)
        {
            // 자아.. DELETE 해주는 부분..
            // 실제로 삭제는 하지 않고 상태만 바꿔준다..
            // 바꿔줘야 하는 것은 MASTER_ID를 기준으로 동일한 것을 전체 처리..

            if (OBJECT_ID == null || "".Equals(OBJECT_ID))
            {
                return(false);
            }

            string sql_delete = "UPDATE " + __TABLE_NAME__ + " SET STATUS = 'D' WHERE MASTER_ID IN ( SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{0}' )";
            string sql        = string.Format(sql_delete, OBJECT_ID);
            OraDB  DB         = new OraDB();

            DB.Execute(sql);
            DB.Close();
            return(true);
        }
예제 #7
0
        public bool update(string person_id)
        {
            // update.....
            // 자아.. UPDATE를 해주자..
            // UPDATE는 INSERT와 유사하다..
            // 하나의 ROW를 만들어 주고.. ( 물론 이때 MASTER_ID만 동일.. VERSION등이 변경. .)
            // OBJECT_ID를 얻고..
            // 신규로 만들어 진놈에 _update를 호출한다..

            string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL";
            // 자아.. 똑같아.. 일단은 신규 ID를 가져와..


            string column_str = "";

            for (int i = 0; i < COLUMN_NAME.Length; i++)
            {
                string _name = COLUMN_NAME[i];
                if (FIXED_COLUMNS.Contains(_name))
                {
                    continue;
                }

                column_str += "," + _name;
            }

            string sql_update = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS " + column_str + " ) "
                                + " SELECT '{2}' OBJECT_ID, CREATE_DATE, CREATOR_ID, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS') UPDATE_DATE , "
                                + " '{0}' UPDATOR_ID, MASTER_ID, VERSION+1 VERSION, STATUS " + column_str
                                + " FROM " + __TABLE_NAME__ + " "
                                + " WHERE OBJECT_ID = (SELECT MAX(OBJECT_ID) FROM " + __TABLE_NAME__ + " WHERE MASTER_ID IN ( "
                                + " SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{1}' ) )";
            // 자아.. SQL설명..
            // 신규로 ROW를 하나 만드는 것이다..



            OraDB DB = new OraDB();

            string ori_object_id = this.OBJECT_ID;  // 일단 예전것..

            string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader)
            {
                string val = reader[0].ToString();
                return(val);
            });


            if (object_id != null && !"".Equals(object_id))
            {
                // 일단은 신규 object_id 를 가져왔으면..
                string sql = string.Format(sql_update, person_id, ori_object_id, object_id);
                DB.Execute(sql);
                this.OBJECT_ID = object_id; // 자아.. 일단 값을 넣고..
                // 마지막으로 실제 업데이트..
                _update(person_id);
            }
            DB.Close();

            return(true);
        }