1. 程式人生 > >工作中小細節總結(三)

工作中小細節總結(三)

41 工程配置
   1、通過built path 中的Source 的選擇需要編譯的檔案

   2、通過Libraries 加入需要引入的包

42 oracle 匯出一條或多條記錄的insert語句
   滑鼠放在表名上右擊"export data",選擇sql inserts ,填寫where條件選擇儲存路徑後匯出

43 改造時,分析瞭解完整個流程,再進行改造。或者 先改造,多測試。

44 生產資料,臨時變化的資料一定要復原

45 處理賬務資料的時候,首先防重,其次校驗需要的條件是否滿足

46 自助生成id 參考非稅SimpleRandomKeyGen.java
    1.SELECT FUNC_GET_UNIQUE_ID(20) FROM DUAL
    2.
create or replace function FUNC_GET_UNIQUE_ID (LEN in integer)
                   return varchar2 is  Result varchar2(20);
    begin
 IF 20=LEN THEN
   SELECT to_char(sysdate, 'YYYYMMDDHH24MI') ||
        ltrim(TO_CHAR(seq_random.nextval, '09999999'))
   INTO Result
   FROM dual;
 ELSIF 10=LEN THEN
   SELECT to_char(sysdate, 'MMDD') ||
        ltrim(TO_CHAR(SEQ_RANDOM_6.nextval, '099999'))
   INTO Result
   FROM dual;
 END IF;
 return(Result);


    end;

seq_random 和 seq_random_6  為oracle 的sequence-序列; 。nextval 得到下一個序列號值,。currval得到當前序列的值

create sequence sequence_name increase by 1 --(增量為1)
start with 10000--(初值)
nomaxvalue
nocycle
nocache

47 事務 java.sql.Connection conn  = new java.sql.Connection();
開啟事務  
     conn.setAutoCommit(false)
事務回滾
conn.rollback();
             conn.setAutoCommit(true);
需要注意的是conn != null && conn.isClosed() == false       try catch
提交事務
     conn.commit();
             conn.setAutoCommit(true);

48  oracle 插入'&' 特殊字元

insert into TS_SYS_FUNC (FUNC_ID, FUNC_NAME, FUNC_URL, UP_FUNC_ID, BIND_ID, FUNC_LEVEL, AUTH_LEVEL, FUNC_STATUS, MEMO, ORD_ID, FUNC_TYPE, TRANS_ID)
values ('179', '批量未明確交易維護', '/kft/maintainPreSearchBatch.do?method=preSearchBatch$$$transID=02-01-06$$$sysCode=S020', '173', '179', '4', null, '1', null, 179, 'M', '02-01-06');

update TS_SYS_FUNC t
   set t.func_url = replace(t.func_url,'$$$' ,'&' )
where  t.func_id in ('172','173','163','164','154','155') or t.up_func_id in ('173','164','155');

49  設定金額格式
   java.text.DecimalFormat df = new DecimalFormat("0.00");
       df.format(double)

50  用主表的返回更新明細資料 (資料操作 使用SELECT 更新 )
update td_interface_oes_detail t
       set t.rtn_msg = (select t1.rtn_msg
                          from td_interface_oes_main t1
                         where t.id = t1.id )
    where t.seq_no = '10000'

分析:可以先寫一個簡單的demo,然後修改實際資料達到要求

51  關鍵字 instanceof

52  分頁 request 和 sql配合
     requset 中存放當前頁數 和 每頁條數
sql 採用分頁 函式

53  靜態網頁和動態網頁的主要區別之處是什麼?
靜態,沒有互動性。

54  include指令中使用page和file有沒有區別?

55  request的getParameter和getAttribute獲取的具體是什麼引數

56  MERGE INTO  archive ar
      USING  ( SELECT  activity, description FROM  activities) ac
   ON  (ar.activity = ac.activity)  //此處為Merge的條件
  WHEN MATCHED THEN    //當條件成立時則執行下面的Update操作
      UPDATE SET 
         description = ac.description
  WHEN NOT MATCHED THEN  //當條件不成立時則執行下面的Insert操作
      INSERT 
         (activity, description)
         VALUES  (ac.activity, ac.description)
上面的語句用來對archive表進行更新與插入的操作,
當條件成立時用activities表的description欄位值來更新archive表的description欄位值,
當條件不成立時,則用activities表的activity, description欄位值進行Insert操作。

merge into 必須是兩張表嗎?

嗯,需要

一張是插入,一張是源

57  如何補錄完成後自動跳轉到下一條
setList 儲存id , 獲取下一條的時候排除掉這些id;

58 修改欄位型別number為varchar2
    方法1)新加一個欄位(按照新的資料型別),然後把資料複製過來。(不足:改變了表的欄位順序)
--修改原欄位名SERIAL_NO為SERIAL_NO_bak
alter table td_batch_head rename column SERIAL_NO to SERIAL_NO_bak;
--增加一個和原來欄位名相同的欄位SERIAL_NO
alter table td_batch_head add SERIAL_NO varchar2(38);
--將原來的SERIAL_NO_bak資料使用to_char函式更新到增加的欄位SERIAL_NO
update td_batch_head set SERIAL_NO = to_char(SERIAL_NO_bak);
--更新完成,刪除原來欄位SERIAL_NO_bak
alter table td_batch_head drop column SERIAL_NO_bak;
方法2)新建一個表,再把資料複製過來
--方法二
alter table td_batch_head_temp1 rename to td_batch_head_temp1_bak;
-- Create table
create table TD_BATCH_HEAD_TEMP1
(
 SERIAL_NO           varchar2(38) not null,
 BANK_NO             VARCHAR2(9) not null,
 UNIT_NO             VARCHAR2(20) not null,
 UNIT_NAME           VARCHAR2(100),
 SUMMARY             VARCHAR2(200),
 IS_PRINT            INTEGER,
 PROC_DATE           VARCHAR2(8) not null,
 TOTAL_COUNT         NUMBER(10) default 0 not null,
 TOTAL_AMT           NUMBER(16,2) default 0 not null,
 BANK_RECV_DATE      VARCHAR2(10),
 BANK_RECV_TIME      VARCHAR2(8),
 BANK_SUCCESS_COUNT  NUMBER(10) default 0,
 BANK_SUCCESS_AMT    NUMBER(16,2),
 BANK_FAIL_COUNT     NUMBER(10) default 0,
 BANK_FAIL_AMT       NUMBER(16,2) default 0,
 BANK_SEND_DATE      VARCHAR2(10),
 BANK_SEND_TIME      VARCHAR2(8),
 FINANCE_TOTAL_COUNT NUMBER(10) default 0,
 FINANCE_SEND_DATE   VARCHAR2(10),
 FINANCE_SEND_TIME   VARCHAR2(8),
 OES_MAIN_ID         VARCHAR2(20),
 SEND_STATE          INTEGER,
 AC_NO_DS            VARCHAR2(50),
 KFT_MAIN_ID         VARCHAR2(20)
)
tablespace BASEDATA
 pctfree 10
 initrans 1
 maxtrans 255
 storage
 (
   initial 64K
   minextents 1
   maxextents unlimited
 );
-- Add comments to the table 
comment on table TD_BATCH_HEAD_TEMP1
 is '批量收款資料頭表';
-- Add comments to the columns 
comment on column TD_BATCH_HEAD_TEMP1.SERIAL_NO
 is '標識號';
comment on column TD_BATCH_HEAD_TEMP1.BANK_NO
 is '銀行編碼';
comment on column TD_BATCH_HEAD_TEMP1.UNIT_NO
 is '單位編碼';
comment on column TD_BATCH_HEAD_TEMP1.UNIT_NAME
 is '單位名稱';
comment on column TD_BATCH_HEAD_TEMP1.SUMMARY
 is '摘要,如:學費、水電費等';
comment on column TD_BATCH_HEAD_TEMP1.IS_PRINT
 is '是否列印票據
0 否
1 是
';
comment on column TD_BATCH_HEAD_TEMP1.PROC_DATE
 is '日期';
comment on column TD_BATCH_HEAD_TEMP1.TOTAL_COUNT
 is '總筆數';
comment on column TD_BATCH_HEAD_TEMP1.TOTAL_AMT
 is '總金額';
comment on column TD_BATCH_HEAD_TEMP1.BANK_RECV_DATE
 is '銀行接收日期';
comment on column TD_BATCH_HEAD_TEMP1.BANK_RECV_TIME
 is '銀行接收時間';
comment on column TD_BATCH_HEAD_TEMP1.BANK_SUCCESS_COUNT
 is '銀行返回批扣結果總筆數--成功';
comment on column TD_BATCH_HEAD_TEMP1.BANK_SUCCESS_AMT
 is '銀行返回批扣結果總金額--成功';
comment on column TD_BATCH_HEAD_TEMP1.BANK_FAIL_COUNT
 is '銀行返回批扣結果總筆數--失敗';
comment on column TD_BATCH_HEAD_TEMP1.BANK_FAIL_AMT
 is '銀行返回批扣結果總金額--失敗';
comment on column TD_BATCH_HEAD_TEMP1.BANK_SEND_DATE
 is '銀行傳送批扣結果日期';
comment on column TD_BATCH_HEAD_TEMP1.BANK_SEND_TIME
 is '銀行傳送批扣結果時間';
comment on column TD_BATCH_HEAD_TEMP1.FINANCE_TOTAL_COUNT
 is '財政返回錯誤筆數';
comment on column TD_BATCH_HEAD_TEMP1.FINANCE_SEND_DATE
 is '財政返回日期';
comment on column TD_BATCH_HEAD_TEMP1.FINANCE_SEND_TIME
 is '財政返回時間';
comment on column TD_BATCH_HEAD_TEMP1.OES_MAIN_ID
 is '與OES主表主鍵關聯';
comment on column TD_BATCH_HEAD_TEMP1.SEND_STATE
 is '(與財政相關聯狀態)-1 未傳送  0 傳送成功 1 傳送失敗 2 全部扣款成功 3全部扣款失敗 4 部分扣款成功';
comment on column TD_BATCH_HEAD_TEMP1.AC_NO_DS
 is '代收專戶賬號 -- 區分 不同區委財政交易';
comment on column TD_BATCH_HEAD_TEMP1.KFT_MAIN_ID
 is '與KFT主表主鍵關聯';
-- Create/Recreate primary, unique and foreign key constraints 
alter table TD_BATCH_HEAD_TEMP1
 add constraint PK_TD_BATCH_HEAD_TEMP1 primary key (SERIAL_NO)
 using index 
 tablespace BASEDATA
 pctfree 10
 initrans 2
 maxtrans 255
 storage
 (
   initial 64K
   minextents 1
   maxextents unlimited
 );


insert into TD_BATCH_HEAD_TEMP1
 (SERIAL_NO,
  BANK_NO,
  UNIT_NO,
  UNIT_NAME,
  SUMMARY,
  IS_PRINT,
  PROC_DATE,
  TOTAL_COUNT,
  TOTAL_AMT,
  BANK_RECV_DATE,
  BANK_RECV_TIME,
  BANK_SUCCESS_COUNT,
  BANK_SUCCESS_AMT,
  BANK_FAIL_COUNT,
  BANK_FAIL_AMT,
  BANK_SEND_DATE,
  BANK_SEND_TIME,
  FINANCE_TOTAL_COUNT,
  FINANCE_SEND_DATE,
  FINANCE_SEND_TIME,
  OES_MAIN_ID,
  SEND_STATE,
  AC_NO_DS,
  KFT_MAIN_ID)
 select to_char(SERIAL_NO),
        BANK_NO,
        UNIT_NO,
        UNIT_NAME,
        SUMMARY,
        IS_PRINT,
        PROC_DATE,
        TOTAL_COUNT,
        TOTAL_AMT,
        BANK_RECV_DATE,
        BANK_RECV_TIME,
        BANK_SUCCESS_COUNT,
        BANK_SUCCESS_AMT,
        BANK_FAIL_COUNT,
        BANK_FAIL_AMT,
        BANK_SEND_DATE,
        BANK_SEND_TIME,
        FINANCE_TOTAL_COUNT,
        FINANCE_SEND_DATE,
        FINANCE_SEND_TIME,
        OES_MAIN_ID,
        SEND_STATE,
        AC_NO_DS,
        KFT_MAIN_ID
   from TD_BATCH_HEAD_TEMP1_bak;
方法三、 建立備份表,備份資料,刪除原表,修改表結構,匯入資料。

59 重型方法和輕型方法的區分是?
UML/RUP/CMM這些重型方法

60 您好,我是XXX,我這邊有一個XX問題想找XX.(與財委業務交流)