2013-03-11 1 views
-1

자바에서 저장 프로 시저를 호출하고 있습니다. 이제 저장 프로 시저의 매개 변수를 위치 대신 inidex라는 이름으로 설정해야합니다.저장 프로 시저를 호출 할 때 JDBC/JPA의 위치 대신 이름으로 매개 변수를 설정하는 방법은 무엇입니까?

나는 문자열 연결을 사용하고 싶지 않지만, 다루기에는 안전하고 추악하지 않다.

알림 : OUT/INOUT 매개 변수로도 작업해야합니다.

+0

무엇 JPA와 관련이 있나? JPA2.1의 사전 릴리스 저장 프로 시저 지원을 사용합니까? 그렇다면 JPA 구현은 무엇입니까? 또는 JDBC를 사용하여 JPN 태그 – DataNucleus

+0

@ DataNucleus를 제거하면 JPA 또는 JDBC로 작업하도록 선택할 수 있으며 어느 것이 가장 적합한 지 선택하게됩니다. – imgen

답변

2

우리 포맷 cstmt는 인수가 대응하는 프로 시저의 인자 이름 인 CallableStatement

이다

cstmt.setString("arg", name); 

를 이용하여 매개 변수의 이름있다.

이 경우 paramname을 사용할 것이므로 저장 프로 시저의 인수와 동일한 순서로 매개 변수의 이름을 지정할 필요가 없습니다. 당신은 링크를 읽을 수

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.jdbc_pg.doc/jdbc89.htm

- -의 registerOutParameter 문이 링크에있다 -

은 또한 당신은 아래 링크에서 된 CallableStatement에 관한 튜토리얼을 통해 갈 수

// Register out parameter which should return the product is created. 
    cstmt.registerOutParameter("prod_id", Types.FLOAT); 
+0

하지만 setString은 OUT 매개 변수와 어떻게 작동합니까? 아니면 전혀 작동합니까? – imgen

+0

나는 나의 대답을 편집했다. 그것을보십시오. –

+0

차가움. 이것은해야한다. – imgen

1

언어 내에서 가능하지 않지만 가능합니다. 이 기능을 제공하거나 타사 코드 (권장 방식)를 사용하기 위해 자체 코드를 작성해야합니다. 나는 성공의 과거에이 article의 간단한 코드를 사용했다. 모든 경우를 처리하지는 않지만 쉽게 확장 할 수 있습니다. SpringFramework는보다 견고한 솔루션을 찾고있는 경우이 기능을 제공하는 라이브러리도 제공합니다.