Hi all,
I'd like to execute a little oracle sql script (containing multiple
sql statements) using groovy.sql.Sql.
I put the sql script in a groovy multiline string
static final String createTableDefDirX2 = '''\
CREATE TABLE DEF_DIRX2
(
"DIRX_STAND" VARCHAR2(20 BYTE) NOT NULL DISABLE,
"GESCHAEFTSROLLE" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"APPLIKATIONSROLLE" VARCHAR2(20 BYTE) NOT NULL ENABLE,
"SYRIUSUMGEBUNG" VARCHAR2(30 BYTE) NOT NULL ENABLE
);
CREATE INDEX DEF_DIRX2_GESCHAEFTSROLLE ON DEF_DIRX2
( "GESCHAEFTSROLLE" );
CREATE INDEX DEF_DIRX2_DIRX_STAND ON DEF_DIRX2
( "DIRX_STAND" );
CREATE INDEX DEF_DIRX2_SYRIUSUMGEBUNG ON DEF_DIRX2
( "SYRIUSUMGEBUNG" );
CREATE INDEX DEF_DIRX2_APPLIKATIONSROLLE ON DEF_DIRX2
( "APPLIKATIONSROLLE" )
'''
When I execute the script like this
def createDefDirX(){
Sql sql = createGroovySql()
try{
sql.execute(SecurityDbDdls.createTableDefDirX2)
}
finally{
sql.close()
}
}
I get
21.09.2012 09:56:40 groovy.sql.Sql execute
WARNUNG: Failed to execute: CREATE TABLE DEF_DIRX2
...
because: ORA-00911: Ungültiges Zeichen
The ';' seems to be the problem.
Ok, workaround... split the script by hand (using ';' to split) and
execute each statement separately:
def createDefDirX(){
Sql sql = createGroovySql()
try{
SecurityDbDdls.createTableDefDirX.split(";").each { sql.execute(it) }
}
finally{
sql.close()
}
}
Question: Isn't there a more elegant solution than splitting the sql
script by hand?
I'd like to execute the script in one direct attempt.
Thanks for your answer & best regards,
Peti
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email