salida - executeSqlScript falla con Spring para bloquear PL/SQL
pl sql tutorial (1)
Parece que está intentando usar funciones de PL / SQL en su secuencia de comandos.
Los executeSqlScript(..)
en AbstractTransactionalJUnit4SpringContextTests
delegan internamente en ScriptUtils.executeSqlScript(..)
entre bastidores, y ScriptUtils
solo es compatible con scripts SQL puros.
Por lo tanto, es probable que deba cambiar a declaraciones SQL simples y encontrar un mecanismo diferente para recuperar el valor del account__id
de la account__id
.
Otra opción (que no he probado) sería cambiar el separador de declaración a algo que no sea ";"
(por ejemplo, "end;"
), pero no puede hacerlo a través de AbstractTransactionalJUnit4SpringContextTests.executeSqlScript
. En cambio, necesitaría invocar ScriptUtils.executeSqlScript(..)
o (quizás preferiblemente) usar ResourceDatabasePopulator
.
Estoy tratando de poblar mi base de datos usando la función incorporada executeSqlScript
de AbstractTransactionalJUnit4SpringContextTests
usando el siguiente archivo SQL externo.
declare
id number;
begin
insert into table1 (field1) values (''V1'') returning account__id into id;
insert into table2 (my_id, field2) VALUES (id, ''Value3'');
end;
Sin embargo estoy recibiendo el siguiente error. No estoy seguro de lo que se me permite hacer en un archivo SQL que me gustaría ejecutar usando executeSqlScript
.
org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [testdata.sql]: declare id number; nested exception is java.sql.SQLException: ORA-06550: line 1, column 17:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
:= . ( @ % ; not null range default character
Caused by: java.sql.SQLException: ORA-06550: line 1, column 17:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
:= . ( @ % ; not null range default character
Entonces mis preguntas son: ¿Qué puedo expresar en el archivo SQL para executeSqlScript
? ¿Cuál es la causa del error que estoy recibiendo?