2013-12-12 55 views
0
V $表

我想查詢使用Groovy(進口groovy.sql.SQL)這樣在Oracle V $會話表:如何查詢Oracle使用Groovy

sql.eachRow(""" 
Select 
'Y' as runInd 
from v$session 
where upper(module) = ? 
having count(*) > 1 
""", [programName]) {row -> etc...} 

但是Groovy中不斷告訴我: 「Groovy:在靜態作用域中發現了」明顯變量「會話,但並未引用局部變量,靜態字段或類。」

它顯然不喜歡名爲v $ session的表。我嘗試了很多東西,我不知道爲什麼我無法找到如何做到這一點。任何幫助表示讚賞。謝謝!

湯姆

+0

什麼很多事情你試過?它們是否包含使用['slashy strings'](http://groovy.codehaus.org/Strings+and+GString)作爲'v \ $ session'轉義它,或者連接兩個部分字符串? –

+0

使用三個單引號'''''而不是雙引號'「」「'來聲明你的多行字符串 –

回答

1

代替"""這標誌着它作爲一個多行模板常規字符串,儘量'''這不應該試圖模板的東西之後的$

sql.eachRow('''Select 
       | 'Y' as runInd 
       | from v$session 
       | where upper(module) = ? 
       | having count(*) > 1'''.stripMargin(), [programName]) { row -> 
    etc... 
} 
+0

完美,謝謝蒂姆! – tnichol