我想用eclipselink中的输入数组执行存储过程(oracle)。
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;
/
但是它存在问题,数组中的问题,我认为。
需要你的帮助。
答案 0 :(得分:-1)
以这种方式解决它: