我正在尝试使用Groovy(导入的groovy.sql.SQL)查询Oracle v $会话表,如下所示:
sql.eachRow("""
Select
'Y' as runInd
from v$session
where upper(module) = ?
having count(*) > 1
""", [programName]) {row -> etc...}
但Groovy一直告诉我:“Groovy:在静态范围内找到了表观变量'session',但没有引用局部变量,静态字段或类。”
它显然不喜欢名为v $ session的表。我尝试了很多东西,我不知道为什么我不知道怎么做。任何帮助表示赞赏。谢谢!
汤姆
答案 0 :(得分:1)
而不是"""
将其标记为多行模板化的groovy字符串,请尝试'''
,而不应尝试对$
之后的内容进行模板设计:
sql.eachRow( '''Select
| 'Y' as runInd
| from v$session
| where upper(module) = ?
| having count(*) > 1'''.stripMargin(), [programName]) { row ->
etc...
}