0

我通过读取 .sql 文件并通过休眠执行生成查询时遇到问题。

错误生成步骤: 读取 .sql 文件。--> 并创建休眠的 SQLQuery 对象。--> 执行查询。假设存在休眠会话,请遵循此代码段。我使用hibernate 4.2.0.1.Final 和Spring 的3.2.1.RELEASE 版本。

        // optimization.sql is having 1500 lines of Indexes script...     
        private static String resource = "/com/iqx/storage/queries/optimization.sql";        
        InputStream is = ExcelResourceReader.class.getResourceAsStream(resource);
        BufferedReader bf = new BufferedReader(new InputStreamReader(is));
        StringBuffer sb = new StringBuffer();
        while ((str = bf.readLine()) != null) {
            sb.append(str + "\n");
        }
        bf.close();     
        SQLQuery query = session.createSQLQuery(sb.toString());
        query.executeUpdate();

这只是“optimization.sql”上的单个索引示例。文件中大约有 100 个索引

        IF EXISTS (SELECT name FROM SYS.INDEXES WHERE NAME = N'QBI_TIDX')
            DROP INDEX [QBI_TIDX] ON [ABSTRACT_TABLE]
        GO
        CREATE NONCLUSTERED INDEX [QBI_TIDX] ON [ABSTRACT_TABLE] 
        (
            [QUOTE_FK] ASC,
            [ID] ASC
        )
        INCLUDE ( [VERSION],
        [DESCRIPTION]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
        GO

错误:“12:04:10.996 [main] WARN ohejdbc.spi.SqlExceptionHelper - SQL 错误:102,SQLState: S0001 12:04:10.996 [main] ERROR ohejdbc.spi.SqlExceptionHelper - 'GO' 附近的语法不正确。”

但是当我使用 SQLServer Studio 运行生成的输出(Stringbuffer)时,它并没有给我这个问题。

如果有人有想法,请指导。提前致谢。

4

0 回答 0