2010年6月1日 星期二

[筆記]如何用java呼叫oracle store procedure並接收 oracle object的回傳參數

因應和介接系統的API stored procedure修改,將原本的回傳參數型態由oracle cursor
改成oracleobject,機歪老闆又把這項雜事丟給我,要我測試在我們的系統上是否可行。

雖然網路上的參考文獻很多,不過大部分都是傳送或接收陣列型態的參數給stored procedure,
所以花了一些功夫整理了一下關鍵的內容。




conn = this.getConnectionAdapter().getNewConnection();
vendorConn = (OracleConnection)((WLConnection)conn).getVendorConnection();
call = (OracleCallableStatement)vendorConn.prepareCall(" begin twm_pg_ec_test.pc_get_oracle_object_demo(?,?) ; end;"); //引號內是stored procedure
//的名稱,問號是傳給他即接受的對應參數。

call.setString(1, "EC");//設定第一個參數
call.registerOutParameter(2, OracleTypes.STRUCT, "ECUSER2.EMPLOYEETYPE");
//設定第二個回傳的參數,同時指定他在資料庫上的object type(第二個參數)
call.executeQuery();

oracle.sql.STRUCT emp = (oracle.sql.STRUCT)call.getObject(2); //解析回傳的第二個參數
oracle.sql.Datum[] attrs = emp.getOracleAttributes();//取得所有oracle object的屬性

//取得oracle object屬性的值
int id= attrs[0].intValue();
String firstName = attrs[1].stringValue();
String lastName = attrs[2].stringValue();
java.util.Date dob = attrs[3].dateValue();
String phone = attrs[4].stringValue();







[+/-] 深入閱讀

2010年5月24日 星期一

關於愛情

很多人問我為什麼不去交個女朋友?我總是無奈的苦笑回答:「或許是緣分還沒到吧!?」


可能是金星在金牛的關係,也可能是過去努力追求的經驗都不太好,總之在這方面
我總是顯的十分的被動,catch板、星座板的文章也看了不少,總覺得一直都是原地
踏步,單身太久了,真的會成為習慣,而我似乎也早已被習慣所束縛,並沒有積極
改變自己生活的想法與動機。



最近得知原本頗有好感的女生死會的消息,雖然有些許遺憾,但是也只能給予祝福,
我自認為也有花了許多時間和精力在她身上,可能我想表達的他未能感受,
而她想透露給我的訊息我無法做出正確的判讀,或許就如星座書上寫的:「
基本宮與變動宮本質上是無法取悅對方的。」

請原諒我總是不解風情.....

[+/-] 深入閱讀