Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

हाइबरनेट और c3p0 कनेक्शन पूल का उपयोग करके जावा ऐप से Oracle संग्रहीत कार्यविधि को कॉल करें

अगर किसी को भी ऐसी ही समस्या है, तो उसे इस तरह हल किया जा सकता है:

public class CallSPTest
{
   public static STRUCT createSTRUCT(oracle.sql.StructDescriptor structDescriptor, 
    java.sql.Connection connection, java.lang.Object[] objects) 
    throws java.sql.SQLException
    {
       return new STRUCT(structDescriptor,connection,objects);
    }
    public void testSP(Session s)
    {
       t = s.beginTransaction();
       s.doWork(new Work()
        {

            @Override
            public void execute(Connection connection) throws SQLException
            {
                try
                {
                    CallableStatement cs = connection.prepareCall("call SP_TEST(?)");                       
                    final Object[] values = new Object[]{1,2};

                    java.sql.Connection connect = 
  org.hibernate.jdbc.BorrowedConnectionProxy.getWrappedConnection(connection);
                    C3P0ProxyConnection castCon = (C3P0ProxyConnection) connect;
                    Method m = StructDescriptor.class.getMethod("createDescriptor", new Class[]{ String.class,Connection.class});
                    Object[] args = new Object[]{"MyType",C3P0ProxyConnection.RAW_CONNECTION};
                    StructDescriptor desc1 =(StructDescriptor) castCon.rawConnectionOperation(m, null, args);

                    Method m2 = CallSPTest.class.getMethod("createSTRUCT",
                            new Class[]{StructDescriptor.class, Connection.class,Object[].class});

                    args = new Object[] {desc1,C3P0ProxyConnection.RAW_CONNECTION,values};
                    final STRUCT struct1 = (STRUCT)castCon.rawConnectionOperation(m2,null,args);
                    cs.setObject(1, struct1, Types.STRUCT);
                    int aff_rows = cs.executeUpdate();
                }
                catch (Exception e)
                {
                    System.out.print(e.getMessage());
                }
            }
        });
    } 
    catch (Exception e)
    {
        System.out.print(e.getMessage());
    }
    finally
    {
        if (null != t)
        {
            t.rollback();                
        }
    }

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle के DBMS_ASSERT के लिए Sql सर्वर समतुल्य क्या है?

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP को java.sql.Timestamp में नहीं डाला जा सकता है

  3. oracle 11gr2 में डंप फ़ाइल आयात करने में त्रुटियाँ प्राप्त होती हैं

  4. जावा के माध्यम से ऑरैकल डीबी फ़ंक्शन में तिथियों की एक सूची पास करना

  5. Oracle प्रपत्र / OC4J . में URL पैरामीटर एक्सेस करना