я создавать представления в SQL Server БД со следующего сценария SQL из SQL Server Management Studio:Groovy: CREATE VIEW из скрипта терпит неудачу с 'создать вид должен быть первым'
use DB_1
go
if exists (select * from sysobjects where name='view_name' and xtype='V')
drop view view_name
go
create view view_name as (
select l.* from table_name l join (select col_1, col_2 from table_name group by col_2, col_1 having col_1=max(col_1)) m on (l.col_2=m.col_2and l.col_1 = m.col_1)
)
go
use DB_2
go
if exists (select * from sysobjects where name='view_name' and xtype='V')
drop view view_name
go
create view view_name as (
select l.* from table_name l join (select col_1, col_2 from table_name group by col_2, col_1 having col_1=max(col_1)) m on (l.col_2=m.col_2 and l.col_1 = m.col_1)
)
go
if exists (select * from sysobjects where name='view_name_2' and xtype='V')
drop view view_name_2
go
create view view_name_2 as (
select l.* from table_name_2 l join (select col_1, col_2 from table_name_2 group by col_2, col_1 having col_1=max(col_1)) m on (l.col_2=m.col_2 and l.col_1 = m.col_1)
)
go
У меня есть некоторые Groovy сценарии для выполнения другие SQL-скрипты, так что я просто пытался выполнить этот в полной аналогии с другими:
Sql.withInstance(...connection_params...){
it.execute((new File('Script.sql')).text)
}
Где Script.sql является SQL-запрос упоминалось выше, с небольшими изменениями (без заявлений «Go»).
Я получаю следующее сообщение об ошибке для этого Groovy сценария во время выполнения:
... create view should be the first in query batch ...
Я не понимаю эту ошибку. Что я должен исправить в сценарии для выполнения этого?
Я попытался создать обходные пути и получил следующие один рабочий для меня:
Sql.withInstance(...connection_params...){ oSQL ->
(new File('Script_2.sql')).eachLine{ oSQL.execute(it) }
}
Где Script_2.sql является легкой модификацией Script.sql: Я удалил пустые строки и преобразование многострочных запросов к одной линии из них ,
Но я хочу понять свою первопричину. Пожалуйста, помогите мне в этом!
Спасибо заранее!
Ian, Спасибо! Понял! В моем обходном пути я вызываю заявления один раз. И я не могу запустить скрипт с GO из Groovy. Итак, похоже, это не моя проблема. Просто правило MS SQL Server. – zubactik