【发布时间】:2018-11-14 07:48:06
【问题描述】:
@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:[]}]
【问题讨论】:
-
已添加@ScaryWombat。
-
也许
java.sql.Types.ARRAY