需要一點幫助,關閉這部分,也許更多一點。我正嘗試從Grails服務中調用Oracle 11g中的存儲過程。從Grails服務調用PLSQL存儲過程
到目前爲止:
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行中的光標,有沒有什麼幫助的。
編輯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()
什麼是'listPeople()'中的'affiliateList'? – dmahapatro 2013-05-07 20:36:23
與peopleList相同的列表,我正在更改名稱 – idonaldson 2013-05-07 20:38:07
您是否使用過'eachRow',如下面的答案中所述? – dmahapatro 2013-05-07 20:42:50