簡體   English   中英

使用Java通過存儲過程插入Oracle 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。

  1. 我需要在這里設置user_id嗎? RE:您可以在設置序列值之前獲取它:

    從雙中選擇sequence_name.nextval

  2. 我在這里需要registerOutParameter嗎? 如果是這樣,為什么? RE:如果要獲得返回值,可以注冊registerParameter,否則請不要忘記。

  3. 如何獲得插入成功的確認? RE:您可以從out參數或過程的返回值獲取結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM