Java JDBC не получает сгенерированные ключи без столбцов последовательности - PullRequest
0 голосов
/ 02 октября 2018
if (Baglan() == false) { return false; }
    try{
        String generatedColumns[] = {"ID","TAHSILATNO"};            
        String sSql = "Declare nId number := 0;" + 
                "        nKey number := 0;" + 
                " BEGIN" + 
                "   Select Nvl(Max(Id),0) + 1 INTO nId From bvktahsilatno;" +
                "   INSERT INTO bvktahsilatno (id, yili, tahsilatno ) VALUES( nId, 2018, 53);" + 
                "   EXCEPTION " + 
                "     WHEN DUP_VAL_ON_INDEX THEN" + 
                "          Select Nvl(Max(Id),0) + 1 INTO nId From bvktahsilatno;" + 
                "          Select Nvl(Max(tahsilatno),0) + 1 INTO nKey From bvktahsilatno WHERE Yili = 2018;" +
                "          INSERT INTO bvktahsilatno (id, yili, tahsilatno ) VALUES( nId, 2018, nKey);" + 
                "END;";

        //VtStatement = VtConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
        //VtStatement.execute(pSql);
        //PreparedStatement  VtStatement = VtConnection.prepareStatement( sSql, Statement.RETURN_GENERATED_KEYS );
        //PreparedStatement  VtStatement = VtConnection.prepareStatement( sSql, generatedColumns );

        PreparedStatement  VtStatement = VtConnection.prepareStatement( sSql, Statement.RETURN_GENERATED_KEYS);
        System.out.println("oracle cumle : "  + sSql);          
        int nAdet = VtStatement.executeUpdate();
        System.out.println("Hatayok/Adet : " + nAdet);

        ResultSet rs = VtStatement.getGeneratedKeys();

        int id=0;
        while (rs.next()) {
             id = rs.getInt(1);

        }           
        System.out.println("Oracle Inserted ID -" + id); // display inserted record

        return true;
    } catch (SQLException e) {                      
        return false;
    }

Я хочу задать вопрос о получении созданных ключей в Oracle Db после запроса вставки.Мой код, как указано выше, но значения сгенерированных ключей не отображаются на терминале.Как я могу получить сгенерированные значения столбцов без создания последовательности?Многие страницы формы говорят, что это возможно как использование последовательности для идентификатора или другого столбца.Также id - это первичный ключ, тахсилатно - это уникальный индекс.Я могу преодолеть эту проблему?Спасибо за вашу помощь с этого момента

...