![](/img/trans.png)
[英]Example for calling a stored procedure in Oracle SQL from Java using JDBC
[英]Oracle JDBC insertion through stored procedure using Java
我正在嘗試使用Java在Oracle 11g中插入一條記錄。 我還在學習Java。
我必須調用存儲過程來插入一條記錄。 我在用戶表中的主鍵是user_id。 我在user_id上也有一個遞增2的序列
現在,在Java中設置輸入參數時,我需要傳遞user_id哪些信息? 另外,在日期參數的情況下將是什么類型:
Users:user_id number (primary key), email varchar, created_date Date
我在下面的Java代碼:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@101.12.11.11:1521:demo", "demo_app", "demo");
CallableStatement cs = conn.prepareCall("{exec demo.my_pkg.insert_users(?,?,?)}");
cs.registerOutParameter(1, Types.INTEGER);
cs.setInt(1, ?????);
cs.execute();
我需要在這里設置user_id嗎? 如果是,由於順序,我應該將其設置為什么? 日期字段和電子郵件字段呢?
我在這里需要registerOutParameter嗎? 如果是這樣,為什么?
最后,我如何獲得插入成功的確認?
謝謝!
如果您沒有在存儲過程中觸發/計算user_id,那么您需要從Java代碼傳遞user_id(獲取Java中的下一個序列值,並將其傳遞給您的存儲函數)。 如果函數返回值,則需要注冊參數。 確認取決於實現。 例如,如果您的函數return是否被用戶插入,只需檢查返回值即可。
我在這里需要registerOutParameter嗎? 如果是這樣,為什么?
是的,如果您的存儲過程返回任何值(例如,它是一個函數),則需要registerOutParameter
要設置日期字段,請使用java.sql.Date類作為Type。
我需要在這里設置user_id嗎? RE:您可以在設置序列值之前獲取它:
從雙中選擇sequence_name.nextval
我在這里需要registerOutParameter嗎? 如果是這樣,為什么? RE:如果要獲得返回值,可以注冊registerParameter,否則請不要忘記。
如何獲得插入成功的確認? RE:您可以從out參數或過程的返回值獲取結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.