2012年6月19日 星期二
JAVA - Write File
public class WriteText{
public static void main(String[] args){
try {
FileWriter outFile = new FileWriter(args[0]);
PrintWriter out = new PrintWriter(outFile);
// Also could be written as follows on one line
// Printwriter out = new PrintWriter(new FileWriter(args[0]));
// Write text to file
out.println("This is line 1");
out.println("This is line 2");
out.print("This is line3 part 1, ");
out.println("this is line 3 part 2");
out.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
http://www.abbeyworkshop.com/howto/java/writeText/index.html
2012年6月11日 星期一
移除IE9
http://lissam.pixnet.net/blog/post/24107184-ie9-%E7%A7%BB%E9%99%A4-internet-explorer-9-%E8%A7%A3%E9%99%A4%E5%AE%89%E8%A3%9D%E6%96%B9%E6%B3%95-(%E9%80%B2%E9%9A%8E)
FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows-InternetExplorer-*9.*.mum /c "cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /norestart"
感謝IST提供
FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows-InternetExplorer-*9.*.mum /c "cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /norestart"
感謝IST提供
系統日 - 年(One year minus on Date)
http://www.orafaq.com/forum/t/143512/2/
select add_months(sysdate,-12) from dual ;
select sysdate - numtoyminterval(1, 'YEAR') from dual;
SELECT SYSDATE - interval '1' YEAR FROM DUAL;
另一個寫法:
declare ltimestamp_start timestamp; ltimestamp_stop timestamp; linterval_diff interval day to second; ldt_temp date; begin ltimestamp_start := systimestamp; dbms_output.put_line(ltimestamp_start); -- Routine to performance test... for i in 1 .. 10000 loop select sysdate into ldt_temp from dual; end loop; ltimestamp_stop := systimestamp; dbms_output.put_line(ltimestamp_stop); linterval_diff := ltimestamp_stop - ltimestamp_start; dbms_output.put_line(CHR(10)||LPAD('=',22,'=')||CHR(10)); dbms_output.put_line(' Runtime Difference'||CHR(10)||LPAD('=',22,'=')); dbms_output.put_line( ' Days : '||EXTRACT(DAY FROM linterval_diff)||CHR(10)|| ' Hours : '||EXTRACT(HOUR FROM linterval_diff)||CHR(10)|| ' Minutes : '||EXTRACT(MINUTE FROM linterval_diff)||CHR(10)|| ' Seconds : '||EXTRACT(SECOND FROM linterval_diff) );
http://jasonvogel.blogspot.tw/2006/11/example-using-systimestamp-milliseconds.html
2012年6月8日 星期五
Transaction 的範例
http://tomkuo139.blogspot.tw/2009/11/oracle-plsql-pragma-autonomoustransacti.html
在Real Table很容易被lock,造成別人不能使用
若使用AUTONOMOUS_TRANSACTION,可以避免table lock的困擾
以下是一個不錯的範例介紹
CREATE OR REPLACE TRIGGER myTrigger
AFTER INSERT ON myTable
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE myMaxTable
SET maxValue = ( SELECT MAX(c1) FROM myTable );
COMMIT;
END;
/
INSERT INTO myTable VALUES (1);
COMMIT;
INSERT INTO myTable VALUES (2);
COMMIT;
SELECT maxValue FROM myMaxTable;
MAXVALUE
----------
1
SELECT MAX(c1) FROM myTable;
MAX(C1)
----------
2
http://www.astral-consultancy.co.uk/cgi-bin/hunbug/doco.cgi?11470
"使用" pragma AUTONOMOUS_TRANSACTION 範例
--建立 Temp Table create tom1 ( aa varchar2(100); ); --建立 Temp 程序 create or replace procedure tomPro is pragma AUTONOMOUS_TRANSACTION; begin insert into tom1 values('123'); commit; end; --執行 begin insert into tom1 values( 'abc' ); tomPro; insert into tom1 values( 'xyz' ); rollback; end; --查看 Temp Table 結果 123
在Real Table很容易被lock,造成別人不能使用
若使用AUTONOMOUS_TRANSACTION,可以避免table lock的困擾
以下是一個不錯的範例介紹
CREATE OR REPLACE TRIGGER myTrigger
AFTER INSERT ON myTable
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE myMaxTable
SET maxValue = ( SELECT MAX(c1) FROM myTable );
COMMIT;
END;
/
INSERT INTO myTable VALUES (1);
COMMIT;
INSERT INTO myTable VALUES (2);
COMMIT;
SELECT maxValue FROM myMaxTable;
MAXVALUE
----------
1
SELECT MAX(c1) FROM myTable;
MAX(C1)
----------
2
http://www.astral-consultancy.co.uk/cgi-bin/hunbug/doco.cgi?11470
2012年6月7日 星期四
measure execution time
忘記在哪邊看到,要計算時間可以用to_char(time, 'sssss'),然後相減
DECLARE
START_TIME DATE;
END_TIME DATE;
BEGIN
START_TIME := SYSDATE;
-- dbo.LF_GET_PROJECT_PRM_T('TPB72400001', '20', '', '20110301', '0001760', ' ', 1, 2, 0, 0, 0, 1000000, 0, 100000, 'R880', 'D');
DBO.JUC7924_7SP(null, null, null, null, 'TPB88S00005', '', '', :RC1); --CAS_P_TRVRAT
END_TIME := SYSDATE;
DBO.OF_INSERT_JUC_10TRANSFER8LOG('1', '', '', 'START TIME:'||START_TIME||', END TIME'||END_TIME, 'EXECUTION TIME:'||(to_char(END_TIME, 'sssss') - to_char(START_TIME, 'sssss')));
END;
SELECT * FROM DBO.TT_LOG;
SELECT * FROM DBO.TT_CAS_P_TRVRAT;
REMOVE DUPLICATE RECORD(2)
繼上次會出現重複的資料
先用group by 把重複的資料拉出來
後來用輸出Insert 指令
最後delete掉後再把剛剛的insert指令丟進來
後來又找相關資料
http://scottelkin.com/programming/find-and-delete-duplicates-in-sql/
這個改天再來玩
但後來發現可以先create view
然後把重複資料塞進來
delete原本db裡面重複的資料
再把view的資料塞進來
就是把上次的動作,用view做掉
CREATE VIEW TEMP1
AS
select * from fbeu.cas_p_trvrat where ratnam = 'R050' and trvltype = 'G' and channel = 20 AND DAYS = 2 and INS_MED = 1500000 AND ROWNUM = 1
先用group by 把重複的資料拉出來
後來用輸出Insert 指令
最後delete掉後再把剛剛的insert指令丟進來
後來又找相關資料
http://scottelkin.com/programming/find-and-delete-duplicates-in-sql/
這個改天再來玩
但後來發現可以先create view
然後把重複資料塞進來
delete原本db裡面重複的資料
再把view的資料塞進來
就是把上次的動作,用view做掉
CREATE VIEW TEMP1
AS
select * from fbeu.cas_p_trvrat where ratnam = 'R050' and trvltype = 'G' and channel = 20 AND DAYS = 2 and INS_MED = 1500000 AND ROWNUM = 1
DROP VIEW TEMP
另外又無意間發現新的東西 PARTITION BY
SELECT RATNAM, RANK() OVER (PARTITION BY RATNAM ORDER BY NUM) RNK
FROM (SELECT ROWNUM NUM, CAS.* FROM FBEU.CAS_P_TRVRAT CAS WHERE RATNAM = 'R050' AND TRVLTYPE = 'G' AND CHANNEL = 20 AND DAYS = 2) X
把資料分割,先這樣改天再來玩
2012年6月5日 星期二
REMOVE DUPLICATE RECORD
剛剛發現重複篩入資料
參考之前在網路上找的資料
http://www.orafaq.com/faq/how_does_one_eliminate_duplicates_rows_from_a_table
想砍ROWID,但用ROWID找出來都是空白
後來用最人工的方法
先把重複的資料用GROUP BY SELECT出來
然後產生INSERT指令
再來砍掉重複的資料後
再把INSERT指令重新
SELECT
COUNT(*)
,RATNAM
,TRVLTYPE
,INS_AMNT
,DAYS
,INS_MED
,PREM
,INS_45_AMOUNT
,CHANNEL
FROM FBEU.CAS_P_TRVRAT WHERE RATNAM = 'B2C_TP1'
GROUP BY
RATNAM
,TRVLTYPE
,INS_AMNT
,DAYS
,INS_MED
,PREM
,INS_45_AMOUNT
,CHANNEL
HAVING COUNT(*) > 1;
訂閱:
文章 (Atom)