Groovy SQL语句语法错误

时间:2016-08-02 17:23:42

标签: sql sql-server groovy soapui

我正在尝试创建一个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中的值设置为属性,然后可以在请求中使用。

关于我做错什么的任何想法?

1 个答案:

答案 0 :(得分:3)

可能是缺少FROM?

SELECT TOP 1 m.ID FROM [DB]。[dbo]。[AOTableName] AS m等......

加上双重vs单引号问题:AND(c.Code = "' ESB'"

应为:AND(c.Code = \' ESB \'