執行 cmd set DEVMGR_SHOW_NONPRESENT_DEVICES=1 devmgmt.msc 叫出裝置管理員, 檢視中會多一個顯示隱藏的裝置. 這在驅動程式有問題時找回被佔用的 com port 時很好用喔...
2007/07/30
xp 裝置管理員的小技巧
2007/07/18
Oracle SQL Tricks - 分析函數 - 階層結構抽出
用這技術可實作不限階層 bom 表, 搭配先前 With clause 的技術, 彈性就更大. 實作出的 bom 表遠比前人用一堆子查詢作出的漂亮的許多. 以下我們以人事的例子來看...
/*
EMPNO ENAME JOB MGR SAL COMM
---------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 800
7499 ALLEN SALESMAN 7698 1600 300
7521 WARD SALESMAN 7698 1250 500
7566 JONES MANAGER 7839 2975
7654 MARTIN SALESMAN 7698 1250 1400
7698 BLAKE MANAGER 7839 2850
7782 CLARK MANAGER 7839 2450
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 7698 1500 0
7900 JAMES CLERK 7698 950
7902 FORD ANALYST 7566 3000
7934 MILLER CLERK 7782 1300
*/
select
empno,
lpad(' ',2*(level)) ename ename,
job, hiredate, sal, comm
from emp
start with ename = ( select ename from emp where mgr is null )
connect by prior empno = mgr;
/*
EMPNO ENAME JOB HIREDATE SAL COMM
---------- -------------------- --------- -------- ---------- --------
7839 KING PRESIDENT 81-11-17 5000
7566 JONES MANAGER 81-04-02 2975
7902 FORD ANALYST 81-12-03 3000
7369 SMITH CLERK 80-12-17 800
7698 BLAKE MANAGER 81-05-01 2850
7499 ALLEN SALESMAN 81-02-20 1600 300
7521 WARD SALESMAN 81-02-22 1250 500
7654 MARTIN SALESMAN 81-09-28 1250 1400
7844 TURNER SALESMAN 81-09-08 1500 0
7900 JAMES CLERK 81-12-03 950
7782 CLARK MANAGER 81-06-09 2450
7934 MILLER CLERK 82-01-23 1300
*/
2007/07/12
Fink - 安裝 OpenSource 的軟體至 MacOSX 的利器
The Fink project wants to bring the full world of Unix Open Source software to Darwin and Mac OS X. 接觸到這個軟體是為了裝 PostgreSQL, 根據官網的建議...是透過 Fink 安裝. http://developer.apple.com/internet/opensource/postgres.html Fink 首頁. http://www.finkproject.org/index.php?phpLang=en 安裝花絮...Fink for x86 installer不過還有一個更有趣的... 就是裡面有一段話... “Don’t trust the “disk space required” figures.” 呵呵...不知道是怎樣....
2007/07/09
FireFox 記憶體減肥法
很多人喜歡用 FireFox, 但是 FireFox 的記憶體使用量簡直比 IE 還要恐怖~ 這邊有一個小技巧, 在 FireFox 的網址列輸入 about:config 按 Enter, 會看到詳細的設定清單, 清單上任一項上按右鍵, 新增→新增真假(Boolean)值, 在對話框中, 設定值的名稱輸入 config.trim_on_minimize 並選 True, 關閉 FireFox 後重新改動 FireFox, 之後若不用 FireFox 時把它縮小, 記憶體就會自動減肥喔~~~效果很棒的. 另外, 還有另一個參數, network.http.pipelining 設成 True, 會加速網頁開啟及顯示~ 效果很讚喔... ;-)
2007/07/06
網頁過期 php 處理方式
在我們利用 javascript history.go(-1); 的時候, 常會出現的問題.... 有時候可以簡單的在 php 處理掉.
/* キャッシュリミッタを'private'に設定する */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
echo "The cache limiter is now set to $cache_limiter
";
// then you can do session_start() ....
2007/07/05
Ruby with OCI8
サンプルコードで使用するパッケージのソースhttp://ruby-oci8.rubyforge.org/ja/api_OCI8.htmlCREATE OR REPLACE PACKAGE MIS_TEST01 IS PROCEDURE my_proc(a1 IN number, a2 IN varchar2, b1 OUT number, b2 OUT varchar2 ); END; / CREATE OR REPLACE PACKAGE BODY MIS_TEST01 IS PROCEDURE my_proc(a1 IN number, a2 IN varchar2, b1 OUT number, b2 OUT varchar2 ) IS BEGIN b1 := a1 * 2; b2 := UPPER(a2); END; END; /明示的に名前でもってパラメータをバインドする。# use OCI8::Cursor#bind_param and OCI8::Cursor#exec sql = 'begin MIS_TEST01.my_proc(:a1, :a2, :b1, :b2); end;' cursor = conn.parse(sql) cursor.bind_param(':a1', 123) cursor.bind_param(':a2', 'abc') # Fixnum としてバインド。値は NULL cursor.bind_param(':b1', nil, Fixnum) # String としてバインド。文字列の最大長は 20 で、値は NULL。 cursor.bind_param(':b2', nil, String, 20) cursor.exec() # パラメータを名前でバインドしたときは名前を使用。 p cursor[':b1'] # => 246 p cursor[':b2'] # => ABC明示的に位置でもってパラメータをバインドする。# use OCI8::Cursor#bind_param and OCI8::Cursor#exec sql = 'begin MIS_TEST01.my_proc(:a1, :a2, :b1, :b2); end;' cursor = conn.parse(sql) cursor.bind_param(1, 123) cursor.bind_param(2, 'abc') cursor.bind_param(3, nil, Fixnum) cursor.bind_param(4, nil, String, 20) cursor.exec() # パラメータを位置でバインドしたときは位置を使用。 p cursor[3] # => 246 p cursor[4] # => "ABC"暗黙的にパラメータをバインドする。# use OCI8::Cursor#exec with bind parameters. sql = 'begin MIS_TEST01.my_proc(:a1, :a2, :b1, :b2); end;' cursor = conn.parse(sql) cursor.exec(123, 'abc', [nil, Fixnum], [nil, String, 20]) # 1番目の引数は1番目の位置のバインド値となる。 # 2番目は2番目のバインド位置....。 # 値が配列のときは、配列の最初の要素がバインドする値で、 # 2番目の要素が型、3番目の要素は最大長となる。 # パラメータは位置でもってバインドされる。 p cursor[3] # => 246 p cursor[4] # => "ABC"実行してバインドパラメータの値を一回で取得する。# OCI8#exec with bind parameters # 実行する SQL が PL/SQL ブロックの場合は、パラメータすべての値を配列で戻す。 sql = 'begin MIS_TEST01.my_proc(:a1, :a2, :b1, :b2); end;' params = conn.exec( sql, 123, 'abc', [nil, Fixnum], [nil, String, 20] ) p params[0] # => 123 p params[1] # => "abc" p params[2] # => 246 p params[3] # => "ABC"
PL/SQL stored procedure do select
一般來說, 無法直接由 stored procedure select 回來, 而是用 dbms_output.put_line 寫回資料, 但是今天看到有趣的寫法如下.
CREATE OR REPLACE PACKAGE MIS_TEST01
AS
TYPE CUR IS REF CURSOR;
PROCEDURE GET_NO(v_no report.no%TYPE,OPCUR OUT CUR);
END;
/
CREATE OR REPLACE PACKAGE BODY MIS_TEST01
AS
PROCEDURE GET_NO(v_no report.no%TYPE,OPCUR OUT CUR)
AS
BEGIN
OPEN OPCUR FOR
SELECT * FROM report WHERE report.no=v_no;
END;
END;
/
訂閱:
文章 (Atom)
