Пример #1
0
        /// <summary>
        /// db에 파일정보를 저장한다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <param name="strUpdateType"></param>
        /// <param name="strFileName"></param>
        public static void FileInfo_Save(Function.Db.OracleDB.strConnect strConn, enUType UType, string strUpdateType, System.IO.FileInfo fi,
                                         string strCRC, string strText, Function.Db.OracleDB.delExcuteProcedure_Progress evtP)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);


            OracleParameter[] param = new OracleParameter[] {
                new OracleParameter("ps_UpdateType", OracleDbType.Varchar2, 20),                                                                //0
                new OracleParameter("ps_UType", OracleDbType.Varchar2, 20),                                                                     //1
                new OracleParameter("ps_FileName", OracleDbType.Varchar2, 100),                                                                 //2
                new OracleParameter("ps_FileName2", OracleDbType.Varchar2, 100),                                                                //3
                new OracleParameter("ps_Version", OracleDbType.Varchar2, 20),                                                                   //4
                new OracleParameter("ps_FileDate", OracleDbType.Date, 8),                                                                       //5
                new OracleParameter("ps_FileImage", OracleDbType.Blob, Convert.ToInt32(fi.Length)),                                             //6
                new OracleParameter("ps_Text", OracleDbType.Varchar2, 400),                                                                     //7
                new OracleParameter("ps_CRC", OracleDbType.Varchar2, 100),                                                                      //8
                new OracleParameter("ps_FileSize", OracleDbType.Int32, 8)
            };                                                                                                                                  //9

            param[0].Value = strUpdateType;
            param[1].Value = UType.ToString();
            param[2].Value = fi.Name.ToUpper();
            param[3].Value = fi.Name;
            param[4].Value = system.clsFile.FileGetVersion(fi.FullName);
            param[5].Value = fi.LastWriteTime;

            param[7].Value = Function.Db.OracleDB.Fnc.StringEmpty2DbNull(strText);
            param[8].Value = strCRC;
            param[9].Value = fi.Length;


            clsDB.Excute_StoredProcedure("AutoUpdater_PKG.FileInfo_Set", param, 6, fi, evtP);
        }
Пример #2
0
        /// <summary>
        /// 기존 버젼으로 되돌린다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <param name="strUpdateType"></param>
        /// <param name="UType"></param>
        /// <param name="strFileName"></param>
        /// <param name="strOldVersion"></param>
        /// <returns></returns>
        public static string FileInfo_Restore_OldVersion(Function.Db.OracleDB.strConnect strConn, string strUpdateType, enUType UType, string strFileName, string strOldVersion)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);

            OracleParameter[] param = new OracleParameter[] {
                new OracleParameter("ps_UpdateType", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_UType", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_FileName", OracleDbType.Varchar2, 100),
                new OracleParameter("ps_OldVersion", OracleDbType.Varchar2, 100),
                new OracleParameter("ps_Msg", OracleDbType.Varchar2, 400)
            };


            param[4].Direction = ParameterDirection.Output;

            param[0].Value = strUpdateType;
            param[1].Value = UType.ToString();
            param[2].Value = strFileName;
            param[3].Value = strOldVersion;


            clsDB.intExcute_StoredProcedure("AutoUpdater_PKG.FileInfo_Restore_OldVersion", param);

            return(Fnc.obj2String(param[4].Value));
        }
Пример #3
0
        public static void Server_FileUpload(enSeverType svrType, string strUpdateType, FileInfo fi, DataRow row, Function.Db.OracleDB.delExcuteProcedure_Progress evt,
                                             Function.Db.OracleDB.strConnect strConn, AutoUpdateServer_Web.AutoUpdateServer web)
        {
            switch (svrType)
            {
            case enSeverType.ORACLE:
                clsDBFunc.FileInfo_Save(strConn, clsDBFunc.enUType.FILE,
                                        strUpdateType, fi, Fnc.obj2String(row["crc"]), string.Empty, evt);
                break;

            case enSeverType.WEB:


                FileStream   fs           = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read);
                BinaryReader br           = new BinaryReader(fs);
                int          intBlockSize = 1024 * 256;                  //256kb

                try
                {
                    byte[] bytes = new byte[intBlockSize];

                    int intBytes;
                    int intTotalBytes = 0;
                    int key           = -1;

                    DataTable dt = row.Table.Clone();
                    DataRow   dr = dt.NewRow();
                    dr.ItemArray = row.ItemArray;
                    dt.Rows.Add(dr);

                    while ((intBytes = br.Read(bytes, 0, bytes.Length)) > 0)
                    {
                        key = web.FileUpload(strUpdateType, dt, bytes, intBytes, fs.Length, intTotalBytes, key);

                        intTotalBytes += intBytes;

                        if (evt != null)
                        {
                            evt(int.Parse(fi.Length.ToString()), intTotalBytes);
                        }
                    }


                    dt.Dispose();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    br.Close();
                    fs.Close();

                    fs.Dispose();
                }

                break;
            }
        }
Пример #4
0
        /// <summary>
        /// 서버에 파일 등록 리스트를 가져온다.
        /// </summary>
        /// <param name="svrType"></param>
        /// <param name="strUpdateType"></param>
        /// <param name="strConn"></param>
        /// <param name="web"></param>
        /// <returns></returns>
        public static DataSet Server_FilList_Get(enSeverType svrType, string strUpdateType,
                                                 Function.Db.OracleDB.strConnect strConn, AutoUpdateServer_Web.AutoUpdateServer web)
        {
            DataSet ds = null;

            switch (svrType)
            {
            case enSeverType.ORACLE:
                ds = clsDBFunc.FileInfo_GetList(strConn, strUpdateType);
                break;

            case enSeverType.WEB:

                ds = web.UpdateDataSet_Req(strUpdateType);

                if (ds == null)
                {
                    ds = new DataSet();
                    ds.ReadXml(fnc.UpdateTypeSchema_FileName);

                    web.UpdateDataSet_Schema_Upload(strUpdateType, ds);
                }

                break;
            }

            return(ds);
        }
Пример #5
0
            /// <summary>
            /// 오라클에 Package가 있는지 검사를 하여 준다.
            /// </summary>
            /// <param name="strConn"></param>
            /// <param name="strTableName"></param>
            /// <returns></returns>
            public static bool PACKAGE_Check_Exists(Function.Db.OracleDB.strConnect strConn, string strPackageName)
            {
                Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);

                //TAUTOUPDATE 테이블 존재 검사 후 없으면 생성 하여 준다.
                string Sql = string.Format(@"SELECT COUNT(*)								
							FROM USER_OBJECTS
							WHERE OBJECT_TYPE ='PACKAGE'
								AND OBJECT_NAME = '{0}'"                                , strPackageName);


                using (DataSet ds = clsDB.dsExcute_Query(Sql))
                {
                    int intTableCnt = Convert.ToInt32(ds.Tables[0].Rows[0][0]);

                    if (intTableCnt < 1)
                    {
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
Пример #6
0
        public clsEpcMW(Function.Util.XML clsXml, OracleDB.strConnect _strConn)
        {
            clsXml.chNode2Root();

            string strSystemID = clsXml.GetSingleNodeValue("SystemInfo/PROGRAMID");

            strConn = _strConn;

            initXmlSetting(strSystemID, clsXml);
        }
Пример #7
0
        /// <summary>
        /// db에 저장된 파일 정보를 삭제를 한다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <param name="strUpdateType"></param>
        /// <param name="strFileName"></param>
        public static int FileInfo_DeleteFile(Function.Db.OracleDB.strConnect strConn, string strUpdateType, string strUType, string strFileName)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);

            OracleParameter[] param = new OracleParameter[] {
                new OracleParameter("ps_UpdateType", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_UType", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_FileName", OracleDbType.Varchar2, 100)
            };

            param[0].Value = strUpdateType;
            param[1].Value = strUType;
            param[2].Value = strFileName;

            return(clsDB.intExcute_StoredProcedure("AutoUpdater_PKG.FileInfo_DeleteFile", param));
        }
Пример #8
0
        public static void Server_FileDelete(enSeverType svrType, string strUpdateType, DataRow row,
                                             Function.Db.OracleDB.strConnect strConn, AutoUpdateServer_Web.AutoUpdateServer web)
        {
            string strFileName = Fnc.obj2String(row["FILENAME"]);


            switch (svrType)
            {
            case enSeverType.ORACLE:
                clsDBFunc.FileInfo_DeleteFile(strConn, strUpdateType, clsDBFunc.enUType.FILE.ToString(), strFileName.ToUpper());
                break;

            case enSeverType.WEB:
                web.FileDelete(strUpdateType, strFileName);
                break;
            }
        }
Пример #9
0
        /// <summary>
        /// db에 저장된 파일 정보 목록을 조회한다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <param name="strUpdateType"></param>
        public static DataSet FileInfo_GetList(Function.Db.OracleDB.strConnect strConn, string strUpdateType)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);

            OracleParameter[] param = new OracleParameter[] {
                new OracleParameter("ps_UpdateType", OracleDbType.Varchar2, 20),
                new OracleParameter("OUT_CURSOR", OracleDbType.RefCursor)
            };


            param[1].Direction = ParameterDirection.Output;

            param[0].Value = strUpdateType;



            return(clsDB.dsExcute_StoredProcedure("AutoUpdater_PKG.FileInfo_GetList", param));
        }
Пример #10
0
        /// <summary>
        /// 오토 업데이트 관련 db설정이 되어 있는지 확인한다.
        /// </summary>
        /// <param name="strConn"></param>
        public static bool DB_Init_Check(Function.Db.OracleDB.strConnect strConn)
        {
            if (OracleDB.Fnc.Table_Check_Exists(strConn, "TAUTOUPDATE"))
            {
                return(true);
            }

            if (OracleDB.Fnc.Table_Check_Exists(strConn, "TAUTOUPDATEHIS"))
            {
                return(true);
            }

            if (OracleDB.Fnc.PACKAGE_Check_Exists(strConn, "AUTOUPDATER_PKG"))
            {
                return(true);
            }

            return(false);
        }
Пример #11
0
        /// <summary>
        /// db에 파일정보를 저장한다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <param name="strUpdateType"></param>
        /// <param name="strFileName"></param>
        public static void FileInfo_Save(Function.Db.OracleDB.strConnect strConn, string strUpdateType, System.IO.FileInfo fi, string strCRC)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn.strTNS, strConn.strID, strConn.strPass);

            OracleParameter[] param = new OracleParameter[] {
                new OracleParameter("ps_UpdateType", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_FileName", OracleDbType.Varchar2, 100),
                new OracleParameter("ps_VERSION", OracleDbType.Varchar2, 20),
                new OracleParameter("ps_FileDATE", OracleDbType.Date, 8),
                new OracleParameter("ps_FileImage", OracleDbType.Blob, Convert.ToInt32(fi.Length)),
                new OracleParameter("ps_CRC", OracleDbType.Varchar2, 100)
            };

            param[0].Value = strUpdateType;
            param[1].Value = fi.Name.ToUpper();
            param[2].Value = system.clsFile.FileGetVersion(fi.FullName);
            param[3].Value = fi.LastWriteTime;
            param[5].Value = strCRC;


            clsDB.Excute_StoredProcedure("AutoUpdater_PKG.FileInfo_Get", param, 4, fi);
        }
Пример #12
0
        /// <summary>
        /// autoupdate에서 필요한 tabel, package등을 생성한다.
        /// </summary>
        /// <param name="strConn"></param>
        /// <returns></returns>
        public static void DB_Init(Function.Db.OracleDB.strConnect strConn)
        {
            Function.Db.OracleDB clsDB = new Function.Db.OracleDB(strConn);

            //TAUTOUPDATE 테이블 존재 검사 후 없으면 생성 하여 준다.
            string Sql = @"
DECLARE VI_CNT INT;
BEGIN

--TAUTOUPDATE 테이블 확인
SELECT COUNT(*)
    INTO VI_CNT                                
FROM USER_OBJECTS
WHERE OBJECT_TYPE ='TABLE'
    AND OBJECT_NAME = 'TAUTOUPDATE';
    
--테이블이 있으면 삭제
IF VI_CNT > 0 THEN   
   EXECUTE IMMEDIATE  'DROP TABLE TAUTOUPDATE CASCADE CONSTRAINTS';
   VI_CNT := 0;
END IF;

--테이블 생성
    EXECUTE IMMEDIATE  'CREATE TABLE TAUTOUPDATE
    (
      UPDATETYPE  VARCHAR2(20 BYTE),
      UTYPE       VARCHAR2(20 BYTE),
      FILENAME    VARCHAR2(100 BYTE),
      FILENAME2   VARCHAR2(100 BYTE),
      VERSION     VARCHAR2(20 BYTE),
      FILEDATE    DATE,
      FILEIMAGE   BLOB,
      TEXT        VARCHAR2(4000 BYTE),
      UPLOADDATE  DATE,
      CRC         VARCHAR2(100 BYTE),
      FILESIZE    INTEGER
    )';


    EXECUTE IMMEDIATE  'CREATE UNIQUE INDEX TAUTOUPDATE_PK ON TAUTOUPDATE
    (UPDATETYPE, UTYPE, FILENAME)';


    EXECUTE IMMEDIATE  'ALTER TABLE TAUTOUPDATE ADD (
      CONSTRAINT TAUTOUPDATE_PK
     PRIMARY KEY
     (UPDATETYPE, UTYPE, FILENAME))';



--TAUTOUPDATEHIS 테이블 확인
SELECT COUNT(*)
    INTO VI_CNT                                
FROM USER_OBJECTS
WHERE OBJECT_TYPE ='TABLE'
    AND OBJECT_NAME = 'TAUTOUPDATEHIS';
    
--테이블이 있으면 삭제
IF VI_CNT > 0 THEN   
   EXECUTE IMMEDIATE  'DROP TABLE TAUTOUPDATEHIS CASCADE CONSTRAINTS';
   VI_CNT := 0;
END IF;


--테이블 생성
EXECUTE IMMEDIATE  'CREATE TABLE TAUTOUPDATEHIS
(
  UPDATETYPE  VARCHAR2(20 BYTE),
  UTYPE       VARCHAR2(20 BYTE),
  VERSION     VARCHAR2(20 BYTE),
  FILENAME    VARCHAR2(100 BYTE),
  FILENAME2   VARCHAR2(100 BYTE),
  FILEDATE    DATE,
  FILEIMAGE   BLOB,
  TEXT        VARCHAR2(4000 BYTE),
  UPLOADDATE  DATE,
  CRC         VARCHAR2(100 BYTE),
  FILESIZE    INTEGER
)';


EXECUTE IMMEDIATE  'CREATE UNIQUE INDEX TAUTOUPDATEHIS_PK ON TAUTOUPDATEHIS
(UPDATETYPE, UTYPE, FILENAME, VERSION)';

EXECUTE IMMEDIATE  'ALTER TABLE TAUTOUPDATEHIS ADD (
  CONSTRAINT TAUTOUPDATEHIS_PK
 PRIMARY KEY
 (UPDATETYPE, UTYPE, FILENAME, VERSION))';
 
 
--PACKAGE생성..
EXECUTE IMMEDIATE  '
CREATE OR REPLACE PACKAGE AutoUpdater_PKG AS
/******************************************************************************
   NAME:       AutoUpdater_PKG
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        2009-09-17      CSW       1. Created this package.
******************************************************************************/
  TYPE T_CURSOR IS REF CURSOR;
  
  PROCEDURE FileInfo_DeleteFile
(
          ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
      ps_UType                   in        TAUTOUPDATE.UTYPE%TYPE,
      ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE 
);
  
  
  --FUNCTION MyFunction(Param1 IN NUMBER) RETURN NUMBER;
  PROCEDURE FileInfo_Get
  (
          ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
      ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
      OUT_CURSOR    OUT T_CURSOR
  );
  
  
  PROCEDURE FileInfo_GetList
  (
          ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
      OUT_CURSOR    OUT T_CURSOR
  );
  
  PROCEDURE FileInfo_GetList_History
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
    OUT_CURSOR            OUT         T_CURSOR
);
  
  PROCEDURE FileInfo_GetFileImage
  (
             ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
         ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
         ps_FileImage            out    TAUTOUPDATE.FILEIMAGE%TYPE
  );
    
PROCEDURE FileInfo_Restore_OldVersion
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,    
    ps_OldVersion                in        TAUTOUPDATE.VERSION%TYPE,
    ps_Msg                   out       Varchar2
);

  PROCEDURE FileInfo_Set
  (
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
    ps_FileName2               in        TAUTOUPDATE.FILENAME2%TYPE,
    ps_Version                in        TAUTOUPDATE.VERSION%TYPE,
    ps_FileDate                in        TAUTOUPDATE.FILEDATE%TYPE,
    ps_FileImage            in        TAUTOUPDATE.FILEIMAGE%TYPE,
    ps_Text                in        TAUTOUPDATE.Text%TYPE,
    ps_CRC                    in        TAUTOUPDATE.CRC%TYPE,
    ps_FileSize            in        TAUTOUPDATE.FileSize%TYPE
  );
END AutoUpdater_PKG;
';

EXECUTE IMMEDIATE 'CREATE OR REPLACE PACKAGE BODY AutoUpdater_PKG AS

--저장된 파일을 삭제 한다.
PROCEDURE FileInfo_DeleteFile
(
      ps_UpdateType              in        TAUTOUPDATE.UPDATETYPE%TYPE,
      ps_UType                   in        TAUTOUPDATE.UTYPE%TYPE,
      ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE 
)
IS
BEGIN
    
        Delete                
            FROM TAUTOUPDATE
         WHERE     UPDATETYPE = ps_UpdateType
             and    UType = ps_Utype
             and    FileName = ps_FileName;
             
             
         Delete                
            FROM TAUTOUPDATEHIS
         WHERE     UPDATETYPE = ps_UpdateType
             and    UType = ps_Utype
             and    FileName = ps_FileName;
       
END;


--저장된 파일에 대한 정보를 조회 한다.
PROCEDURE FileInfo_Get
(
          ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
      ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
      OUT_CURSOR    OUT T_CURSOR
)
IS
BEGIN
    OPEN OUT_CURSOR FOR
        SELECT        UPDATETYPE, 
                        FILENAME,
                        FILENAME2, 
                  VERSION,
                       FILEDATE,
                        FILESIZE,                   
                  UPLOADDATE,
                  CRC,
                  FileSize
            FROM TAUTOUPDATE
         WHERE     UPDATETYPE = ps_UpdateType
             and    FileName = ps_FileName;
       
END;


--update 목록을 조회 한다. old client에서 사용함..
PROCEDURE FileInfo_GetList
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    OUT_CURSOR            OUT     T_CURSOR
)
IS
BEGIN
    OPEN OUT_CURSOR FOR
        SELECT    UPDATETYPE,
                  UTYPE,                  
                  FILENAME,
                  FILENAME2, 
                  VERSION,
                  FILEDATE,                   
                  UPLOADDATE,                  
                  CRC,
                  TEXT,
                  FileSize
            FROM TAUTOUPDATE
         WHERE     UPDATETYPE = ps_UpdateType;
       
END;


--update history 목록을 조회 한다.
PROCEDURE FileInfo_GetList_History
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
    OUT_CURSOR            OUT        T_CURSOR
)
IS
BEGIN
    OPEN OUT_CURSOR FOR
        SELECT    UPDATETYPE,
                  UTYPE, 
                  FILENAME,
                  FILENAME2, 
                  VERSION,
                  FILEDATE,                   
                  UPLOADDATE,
                  CRC,
                  FileSize
            FROM TAUTOUPDATEHIS
         WHERE     UPDATETYPE = ps_UpdateType
              AND  UTYPE = PS_UTYPE
              AND  FILENAME = PS_FILENAME;
       
END;







--저장된 파일에 대한 정보를 조회 한다.
PROCEDURE FileInfo_GetFileImage
(
          ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
      ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
      ps_FileImage            out    TAUTOUPDATE.FILEIMAGE%TYPE
)
IS
BEGIN
    
        SELECT        FILEIMAGE
                Into    ps_FileImage
            FROM TAUTOUPDATE
         WHERE     UPDATETYPE = ps_UpdateType
             AND    UTYPE = ''FILE''
             and    FileName = ps_FileName;
       
END;




--update항목을 기존 버전으로 되돌린다.
PROCEDURE FileInfo_Restore_OldVersion
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,    
    ps_OldVersion                in        TAUTOUPDATE.VERSION%TYPE,
    ps_Msg                   out       Varchar2
)
IS
    vi_Count            int;
    vs_CurrVersion          varchar2(20);
BEGIN
    
    --OLD VERSION 데이터가 있는지 확인한다.
    Select count(*)
        into vi_Count
    From tAutoUpdateHis
    Where      UpdateType = ps_UpdateType
        and    UType = ps_UType
        and    FileName = ps_FileName
        and    Version = ps_oldVersion;
   
    if vi_Count < 1 then
       ps_Msg := ''원복할 기존 데이터가 존재하지 않습니다. v.'' || ps_oldVersion;
       goto End_Proc;
    end if;
    
   --현재 버전을 history로 옮긴다.
   Begin
      Select Version
         into vs_CurrVersion
      From tAutoUpdate 
      where  UpdateType = ps_UpdateType
         and UType = ps_UType
         and FileName = ps_FileName;           
      
      --history에서 같은 버젼 삭제..
      Delete  
      From tAutoUpdateHis
      Where       UpdateType = ps_UpdateType
            and    UType = ps_UType
            and    FileName = ps_FileName
            and    Version = vs_CurrVersion;
            
      --insert
      INSERT INTO  tAutoUpdatehis
                 ( UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
                 )
            SELECT UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
            From tAutoUpdate
            Where     UpdateType = ps_UpdateType
                and   UType = ps_Utype
                and   FileName = ps_FileName;
   
   Exception When No_data_found then
      vi_Count := 0;
   End; 
   
   --현재 데이터 삭제..
   delete
      From tAutoUpdate 
      where  UpdateType = ps_UpdateType
         and UType = ps_UType
         and FileName = ps_FileName;
         
   --retore
    INSERT INTO  tAutoUpdate
                 ( UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
                 )
            SELECT UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
            From tAutoUpdateHis
            Where      UpdateType = ps_UpdateType
                and    UType = ps_UType
                and    FileName = ps_FileName
                and    Version = ps_oldVersion;
    
    --원복한 데이터 histoty에서 삭제..
     delete
     From tAutoUpdateHis
            Where      UpdateType = ps_UpdateType
                and    UType = ps_UType
                and    FileName = ps_FileName
                and    Version = ps_oldVersion;
    
    ps_msg := '''';                
    commit;
    
    <<End_Proc>>
    vi_Count := 0;

Exception When others then
    rollback;
    raise;
    
END;






--update항목을 저장 한다.
PROCEDURE FileInfo_Set
(
    ps_UpdateType            in        TAUTOUPDATE.UPDATETYPE%TYPE,
    ps_UType                 in        TAUTOUPDATE.UTYPE%TYPE,
    ps_FileName                in        TAUTOUPDATE.FILENAME%TYPE,
    ps_FileName2               in        TAUTOUPDATE.FILENAME2%TYPE,
    ps_Version                in        TAUTOUPDATE.VERSION%TYPE,
    ps_FileDate                in        TAUTOUPDATE.FILEDATE%TYPE,
    ps_FileImage            in        TAUTOUPDATE.FILEIMAGE%TYPE,
    ps_Text                in        TAUTOUPDATE.Text%TYPE,
    ps_CRC                    in        TAUTOUPDATE.CRC%TYPE,
    ps_FileSize            in        TAUTOUPDATE.FileSize%TYPE
)
IS
    vi_Count            int;
    vs_OldVersion          varchar2(20);
BEGIN
    Select count(*)
        into vi_Count
    From tAutoUpdate
    Where     UpdateType = ps_UpdateType
        and    FileName = ps_FileName;
      
      
    if vi_Count < 1 then
        Insert into    tAutoUpdate
              (     UpdateType,
               UType, 
               FileName,
               FileName2,
               Version,
               FileDate,
               FileImage,
               TEXT,
               UploadDate,
               CRC,
               FileSize )
        Values ( ps_UpdateType,
               ps_UType,
                ps_FileName,
               ps_FileName2,
               ps_Version,
               ps_FileDate,
               ps_FileImage,
               ps_Text,
               sysdate,
               ps_CRC,
               ps_FileSize );    
    else
        
        Select version
            into vs_OldVersion
        From tAutoUpdate
        Where     UpdateType = ps_UpdateType
            and    FileName = ps_FileName;
        
        --버젼이 변경되면 history에 추가 한다.
        if(nvl(vs_OldVersion, '' '') != nvl(ps_Version, '' '')) then 
        
            Delete
            From tAutoUpdateHis
            Where     UpdateType = ps_UpdateType
                and   Version in (ps_Version, vs_OldVersion)             
                and    FileName = ps_FileName;
        
            INSERT INTO  tAutoUpdateHis
                 ( UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
                 )
            SELECT UpdateType,
                   UType, 
                   FileName,
                   FileName2,
                   Version,
                   FileDate,
                   FileImage,
                   TEXT,
                   UploadDate,
                   CRC,
                   FileSize
            From tAutoUpdate
            Where     UpdateType = ps_UpdateType
                and    FileName = ps_FileName;
                
        end if;
        
        
    
        Update  tAutoUpdate
          Set  Version = ps_Version,
               FileDate = ps_FileDate,
               FileImage = ps_FileImage,
               TEXT = ps_Text,
               UploadDate = sysdate,
               CRC = ps_CRC,
               FileSize = ps_FileSize
         where UpdateType = ps_UpdateType 
          and     FileName = ps_FileName;
    
    end if;
    
    commit;
    
END;

END AutoUpdater_PKG;';

END;
";

            clsDB.intExcute_Query(OracleDB.Fnc.RemoveSpLetter(Sql));
        }
Пример #13
0
 public clsEpcMW(string strSystemID, Function.Util.XML clsXml, OracleDB.strConnect _strConn)
 {
     strConn = _strConn;
     initXmlSetting(strSystemID, clsXml);
 }