Нужно немного помочь с закрывающей частью этого и, возможно, немного больше. Я пытаюсь вызвать хранимую процедуру в Oracle 11g из моей службы Grails.Вызов PLSQL хранимой процедуры из службы Grails
До сих пор:
import java.sql.*
import groovy.sql.Sql
import oracle.jdbc.driver.OracleTypes
class DummyService {
def dataSource
def serviceMethod() {
}
def listPeople(){
Sql sql = new groovy.sql.Sql(dataSource)
def resultList = []
sql.call("BEGIN mypackage.p_get_people(?); END;",
[Sql.resultSet(OracleTypes.CURSOR)]) {cursorResults ->
if(cursorResults.next()) {
results = cursorResults.getAt(1);
}
}
return resultList
}
Хорошо, так что это возвращает первые данные строк, и в зависимости от того, что передается методу getAt(), я могу захватить этот столбец. Который я нашел здесь ORACLE STORED PROCS IN GRAILS
То, что я действительно хочу, это вернуть набор результатов и поместить его в список, я просто не уверен, как это сделать.
При попытке {cursorResults -> println cursorResults}
он выдает ошибку
Message: org.apache.commons.dbcp.DelegatingCallableStatement with Address: "[email protected]"is closed
Запуск этой процедуры непосредственно в Oracle есть 457 строк в курсоре, если это помогает на всех.
Edit 1: Ответ на dmahapatro, это NPE
| Error 2013-05-07 14:16:05,123 [http-bio-8080-exec-1] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [GET] /testapp/messages/list
Stacktrace follows:
Message: null
Line | Method
->> 15 | list in testapp.MessagesController$$EO5AzzAw
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . in ''
^ 662 | run in java.lang.Thread
И сейчас линия 15 просто println dummyService.listPeople()
Что такое 'affiliateList' в' listPeople() '? – dmahapatro
список похожих людейList, я менял имена около – idonaldson
Вы использовали 'eachRow', как указано в ответе ниже? – dmahapatro