1
- 如何使用Groovy調用存儲過程?
- 如何從Grails項目創建存儲過程(作爲創建數據庫的域類)?
調用FullName存儲過程的一個示例,它接受一個參數(示例中爲'Sam')並返回一個VARCHAR。
sql.call("{? = call FullName(?)}", [Sql.VARCHAR, 'Sam']) { name ->
assert name == 'Sam Pullara'
}
同樣的例子再次但具有GString的變化:
def first = 'Sam'
sql.call("{$Sql.VARCHAR = call FullName($first)}") { name ->
assert name == 'Sam Pullara'
}
這裏是用out參數的存儲過程的例子:
sql.call '{call Hemisphere(?, ?, ?)}', ['Guillaume', 'Laforge', Sql.VARCHAR], { dwells ->
println dwells // => Northern Hemisphere
}
參見this。
我嘗試這些方法,但我仍然有一個錯誤:沒有方法的簽名:靜態groovy.sql.Sql.call()適用於參數類型:(java.lang.String,java.util.ArrayList,vltrafficmonitor。 CDRController $ _closure3_closure4)values:[{call call endpoint_stats_get(?,?,?,?)},[1,Mon Dec 20 09:44:00 EET 2010,Mon Dec 20 09:44:00 EET 2010,Sql。% ROWTYPE],[email protected]] – 2010-12-20 08:20:48
可能的解決方案:call(java.lang.String),call(java.lang.String,[Ljava.lang.Object;),call(java.lang.String,java .util.List),調用(java.lang.String,java.util.List,groovy.lang.Closure),調用(groovy.lang.GString),調用(groovy.lang.GString,groovy.lang.Closure) – 2010-12-20 08:22:03
我建議你添加一個.toString()到GStrings,因爲sql.call不接受GStrings – sbglasius 2010-12-21 14:27:46