星期三, 9月 13, 2006

JDBC Store Procedure

今天研究了在 JDBC 中如何呼叫 DB 的 Store Procedure, 在 Java Doc裡面說到, JDBC 提供了一種通用的寫法來呼叫 Store Procedure, 以因應各種不同的 DB(由於目前各 DB 呼叫 Stroe Procedure 的方法不一). 而其寫法如下:
  • {?= call <procedure-name>[<arg1>,<arg2>...]}
  • {call <procedure-name>[<arg1>,<arg2>...]}
以上方法二擇一. 若選擇第一種, 則必需 registered 成 OUT 參數.

而若不使用上述標準寫法, 也可以直接打指令, 例如 SQL Server 為
  • exec <procedure-name> [<arg1>,<arg2>...]
如此則要看使用的 Database 為何, 來下相對應的 SQL.
總的來說, 若 SQL 有用 { } 包起來, 則代表下的命令是 JDBC 的規範. 語法就如上所述..
若沒有用 { } 包起來, 則就要寫符合所用的 Database 之語法規範

第一種的範例片段如下:
CallableStatement stmt = conn.prepareCall("{? = call test_sp ?, ?}");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.setString(2, "008");
stmt.setString(3, "008");
ResultSet rs = stmt.executeQuery();

0 Comments:

張貼留言

<< Home