2016-08-02 26 views
0

データベースのテーブルから値を抽出するGroovyスクリプトを作成しようとしています。このスクリプトは、SOPAUIの要求で使用されます。Groovy SQL文の構文エラー

問題は、私の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 ') 

.......

エラーは以下の通りです:

ERROR:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script25.groovy: 6: unexpected token: ESB @ line 6, column 231. us = 0) AND (c.Code = "'ESB'") ord ^ org.codehaus.groovy.syntax.SyntaxException: unexpected token: ESB @ line 6, column 231. at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:140) at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108) at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) at org.codehaus.groovy.control.CompilationUnit$1.call(......

スクリプトの残りの部分はちょうどそれができるプロパティとしてDBから文字列と設定した値に変換します要求に使用されます。

私が間違っていることは何ですか?

+1

あなたはこれを参照することもできます。http://docs.groovy-lang.org/最新/ html/documentation/index.html#すべての文字列 – SiKing

答えて

3

FROMが見つからないことがありますか?

FROM SELECT TOP 1 m.ID [DB] [DBO] [AOTableNameメートルなどAS ...

プラスで一重引用符の問題対二重:AND(c.Code = " 'ESB'"

は次のようになります。AND(c.Code = \ 'ESB \'

+0

私の部分にタイプミスがあり、そのために私は 'FROM'が欠けていたのです。ありがとうございました - c.Code = \ 'ESB \') – Nobody