[SPRING] 간단한 jdbc 호출을 사용하여 입력 매개 변수로 배열을 저장 프로 시저에 전달하십시오.
SPRING간단한 jdbc 호출을 사용하여 입력 매개 변수로 배열을 저장 프로 시저에 전달하십시오.
여기 내 오라클 절차 사양입니다
CREATE OR REPLACE PACKAGE PKG_RE_FI AS
PROCEDURE PRC_RE_FI_DETAILS(P_FAN_NO IN VARCHAR2,
P_REF_ID IN TY_APP_REF_ID,
P_COMMENTS IN VARCHAR2,
P_BILLING_FLAG IN VARCHAR2,
P_STATUS OUT VARCHAR2);
END PKG_RE_FI;
TY_APP_REF_ID (현재)
CREATE OR REPLACE TYPE ty_app_REF_ID as varray(500) of obj_array_ref_id
CREATE OR REPLACE TYPE obj_array_ref_id AS OBJECT(
app_ref_id VARCHAR2(100)
)
위의 절차를 수행하기 위해 Spring JDBC Framework (SimpleJdbcCall 객체)를 사용하고 있습니다. 아래는 내가 선언 한 코드 스 니펫입니다.
this.reFIJdbcCall = new SimpleJdbcCall(dataSource).withCatalogName("PKG_RE_FI").
withProcedureName("PRC_RE_FI_DETAILS").declareParameters(new SqlParameter("P_FAN_NO", Types.VARCHAR),
new SqlParameter("P_REF_ID", Types.ARRAY),
new SqlParameter("P_COMMENTS", Types.VARCHAR),
new SqlParameter("P_BILLING_FLAG", Types.VARCHAR),
new SqlOutParameter("P_STATUS", Types.VARCHAR)
);
배열을 어떻게 전달해야합니까?
new SqlParameter("P_REF_ID", Types.ARRAY),
McPherson 매개 변수
MapSqlParameterSource in = new MapSqlParameterSource();
해결법
-
==============================
1.동일한 방식으로 PseudoCode를 구현했습니다.
동일한 방식으로 PseudoCode를 구현했습니다.
# 1.You will require a structDescriptor object for an object equivalent in pl sql like : StructDescriptor structDes= new StructDescriptor("<schemaname in caps>.<sql_object_name>", connectionObject); # 2. You will need to pass one object values such name, class, id to an object array in order and accordance to 'sql_object_name' object. For exmaple: STRUCT[] structArray=new STRUCT[<ListObj>.size()]; int index=0; for (a in ListObj){ Object[] object=new Object[]{a.getName(),a.getId()}; STRUCT struct=new STRUCT(structDes ,connectionObject,object); structArray[index]=struct; index++; } ArrayDescriptor arrayDes=ArrayDescriptor.createDescriptor( "<Schema name>.<table object from sql>", connectionObject); ARRAY array=new ARRAY(arrayDes,connectionObject, structArray); then pass it to proc .declareParameters( new SqlInOutParameter("<parameter to proc name>",OracleTypes.ARRAY," <schema name>.<sql_array_or_table_obj>")) like Hashmap<String, Object> map= new HashMap<>(); map.put("<parameter to proc name>",array); psStatement.execute(map);
희망이 도움이됩니다. 이 시퀀스는 사용되는 SQL 데이터베이스의 요구 사항 및 유형에 따라 다를 수 있지만 기본은 동일합니다.
-
==============================
2.Spring Data JDBC Extensions 프로젝트는 이것을 쉽게 지원합니다. Oracle ARRAY 유형을 전달하기위한 참조 설명서를보십시오.
Spring Data JDBC Extensions 프로젝트는 이것을 쉽게 지원합니다. Oracle ARRAY 유형을 전달하기위한 참조 설명서를보십시오.
from https://stackoverflow.com/questions/26655331/pass-array-as-input-parameter-to-an-oracle-stored-procedure-using-simple-jdbc-ca by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 다중 IDP를위한 스프링 SAML 확장 (0) | 2019.04.30 |
---|---|
[SPRING] Stateless 웹 애플리케이션 개발을 위해 Spring MVC 사용 (0) | 2019.04.30 |
[SPRING] Spring을 사용하여 동일한 클래스를 주입 할 수 있습니까? (0) | 2019.04.30 |
[SPRING] oauth2와 함께 스프링 클라우드 게이트웨이 사용 (0) | 2019.04.30 |
[SPRING] Spring 3.1 MVC 애플리케이션의 HTTP 상태 404 (0) | 2019.04.30 |