@SqlQuery
разбирает выберите ответ в список, если хотите.Пример:
@SqlQuery("Select a.id from indexes a")
List<String> selectIds();
Как мне разобрать параметр @SqlCall
как список?Я не могу понять, какой тип из java.sql.Types
я должен использовать.Например, здесь:
@SqlCall("begin " +
"SELECT a.id " +
"BULK COLLECT " +
"INTO :output " +
"from indexes a; "
"end;")
@OutParameter(name = "output", sqlType = #Don't know what to put here#)
OutParameters selectIds();
UPD. Пробовал это:
@SqlCall("begin " +
"SELECT DISTINCT scu.LOGIN " +
"BULK COLLECT " +
"INTO :output " +
"from sc_users scu; " +
"end;")
@OutParameter(name = "output", sqlType = Types.ARRAY)
OutParameters selectIds();
Получил:
org.jdbi.v3.core.statement.UnableToCreateStatementException: Exception while binding 'output' [statement:"begin SELECT DISTINCT scu.LOGIN BULK COLLECT INTO :output from sc_users scu; end;", rewritten:"begin SELECT DISTINCT scu.LOGIN BULK COLLECT INTO ? from sc_users scu; end;", arguments:{ positional:{}, named:{output:org.jdbi.v3.core.statement.Call$OutParamArgument@45198fd9}, finder:[]}]
UPD2. Также пробовал это:
@SqlCall("declare " +
"ar addressVarray; " +
"begin " +
"ar := addressVarray('asd'); " +
":output := ar; " +
"end;")
@OutParameter(name = "output", sqlType = Types.ARRAY)
OutParameters getArray();
, где addressVarray
равно CREATE Or Replace TYPE addressVarray AS VARRAY(2) OF VARCHAR2(50);
Получил снова:
org.jdbi.v3.core.statement.UnableToCreateStatementException: Exception while binding 'output' [statement:"declare ar addressVarray; begin ar := addressVarray('asd'); :output := ar; end;", rewritten:"declare ar addressVarray; begin ar := addressVarray('asd'); ? := ar; end;", arguments:{ positional:{}, named:{output:org.jdbi.v3.core.statement.Call$OutParamArgument@46c22d8e}, finder:[]}]