2013-04-04 59 views
1

欲执行与输入的存储过程(预言) - 从数的EclipseLink的阵列。的EclipseLink存储过程阵列

EntityManager entityManager = entityManagerFactory.createEntityManager(); 
entityManager.getTransaction().begin(); 
StoredProcedureCall call = new StoredProcedureCall(); 
call.setProcedureName("P_TEST2"); 
ReadQuery mquery = new DataReadQuery(); 

call.addNamedArgument("x"); 
call.addNamedOutputArgument("z"); 

mquery.setCall(call); 

int [] x = {1,2,3}; 
Query query = ((JpaEntityManager)entityManager.getDelegate()).createQuery(mquery) 
    .setParameter("x", x); 
DatabaseRecord record = (DatabaseRecord) query.getSingleResult(); 
System.out.println(record.get("z")); 

过程本身

create or replace procedure p_test2(
    x in numeric_array, 
    z out numeric 
) 
AS 
BEGIN 
    FOR i IN x.first .. x.last 
     LOOP 
     INSERT INTO TEST2(ID,VALUE) VALUES (SEQ1.nextval,i); 
     END LOOP; 
    commit; 
    z := seq1.currval; 
END; 
/

但是有与它的问题,在数组中的问题,我想。

需要你的帮助。

回答

-1

以这种方式解决它:

  1. 写入功能/过程,接受字符串(阵列由空格或逗号分隔)
  2. 在功能解析参数并将其转换为的数字表(或任何需要的型)调用需要
  3. 功能
  4. 回报所需结果