Olá pessoal.
Estou com problemas ao executar via código Java, um bloco anônimo em arquivo sql.
É o seguinte: já testei via aplicação Java, para que seja feito um insert em uma tabela, a partir de um script sql e deu certo. Agora estou tendo problemas caso eu tente executar via aplicação Java, um script sql que tenha um bloco anônimo.
Eu já coloquei pra executar esse bloco anônimo no SQL Developer e funcionou perfeitamente. Mas, como devo executar apenas via código Java, peguei o código desse bloco anônimo e coloquei em uma única linha no script sql
Tá dando essa excessão aqui
Exception: ORA-06550: linha 1, coluna 455:
PLS-00103: Encontrado o símbolo "end-of-file" quando um dos seguintes símbolos era esperado:
; <um identificador>
<um identificador delimitado por aspas duplas>
O símbolo ";" foi substituído por "end-of-file" para continuar.
Script SQL executado com sucesso!
java.sql.SQLException: ORA-06550: linha 1, coluna 455:
PLS-00103: Encontrado o símbolo "end-of-file" quando um dos seguintes símbolos era esperado:
Alguém sabe como posso resolver isso? Se eu consegui fazer um insert, então porque um bloco anônimo não dá certo?
Abaixo o script que funcionou no SQL Developer
BEGIN
FOR C IN (SELECT CODCATEGORIA FROM CATEGORIA WHERE CODCATEGORIA = ? )
LOOP
FOR L IN (SELECT CODLIVRO COD FROM LIVRO WHERE CODCATEGORIA = C.CODCATEGORIA)
LOOP
FOR E IN (SELECT CODEMPRESTIMO FROM EMPRESTIMO WHERE CODLIVRO = L.COD)
LOOP
DELETE EMPRESTIMO WHERE CODLIVRO = L.COD;
END LOOP;
DELETE LIVRO WHERE CODLIVRO = L.COD;
END LOOP;
DELETE CATEGORIA WHERE CODCATEGORIA = C.CODCATEGORIA;
COMMIT;
END LOOP;
END;
E abaixo, o mesmo script, em uma única linha que está sendo chamado no arquivo sql.
BEGIN FOR C IN (SELECT CODCATEGORIA FROM CATEGORIA WHERE CODCATEGORIA = 2 ) LOOP FOR L IN (SELECT CODLIVRO COD FROM LIVRO WHERE CODCATEGORIA = C.CODCATEGORIA) LOOP FOR E IN (SELECT CODEMPRESTIMO FROM EMPRESTIMO WHERE CODLIVRO = L.COD) LOOP DELETE EMPRESTIMO WHERE CODLIVRO = L.COD; END LOOP; DELETE LIVRO WHERE CODLIVRO = L.COD; END LOOP; DELETE CATEGORIA WHERE CODCATEGORIA = C.CODCATEGORIA; COMMIT; END LOOP; END;