我正在尝试创建一个groovy脚本,它将从数据库中的表中提取一个值,然后将在SOPAUI中的请求中使用。
问题是在我的SQL查询中,我有一个where子句,其中包含带单引号的字符串值,运行时将返回错误。
import groovy.sql.Sql
import java.sql.Driver
def sql = Sql.newInstance ('jdbc:sqlserver://hostname\\INSTANCE1;Database=DB;integratedSecurity=true','com.microsoft.sqlserver.jdbc.SQLServerDriver')
row = sql.firstRow('SELECT TOP 1 m.ID [DB].[dbo].[AOTableName] AS m INNER JOIN [DOC_MASTER_dev].[dbo].[AOMatterTableName] AS c ON m.SystemID = c.ID WHERE (m.Status = 0) AND (c.Code = "'ESB'") order by newid(), m.DateAddedForReplication desc ')
.......
错误如下:
错误:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: Script25.groovy:6:意外令牌:ESB @第6行,第231列。 us = 0)AND(c.Code ="' ESB'")ord ^ org.codehaus.groovy.syntax.SyntaxException:意外令牌:ESB @第6行,第231列。 在org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:140) 在org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108) 在org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) 在org.codehaus.groovy.control.CompilationUnit $ 1.call(......
脚本的其余部分只会转换为字符串,并将DB中的值设置为属性,然后可以在请求中使用。
关于我做错什么的任何想法?
答案 0 :(得分:3)
可能是缺少FROM?
SELECT TOP 1 m.ID FROM [DB]。[dbo]。[AOTableName] AS m等......
加上双重vs单引号问题:AND(c.Code = "' ESB'" )
应为:AND(c.Code = \' ESB \' )