Хранимая процедура HSQLDB через SQL Tool выдает ошибку сканера - PullRequest
0 голосов
/ 22 марта 2019

Из Swing UI я могу выполнить следующие сценарии один за другим.

ALTER CATALOG PUBLIC RENAME TO SOMENAME;

CREATE SCHEMA SOMESCHEMA;

SET DATABASE SQL SYNTAX ORA TRUE;

CREATE PROCEDURE SOMENAME.SOMESCHEMA.SP_FAILED_COUNT(IN i_ssn VARCHAR(100), IN i_page_id NUMBER(10), IN i_ip_address VARCHAR(100), IN i_session_guid VARCHAR(100), OUT o_toomanyfails VARCHAR(2000))
    READS SQL DATA
        BEGIN ATOMIC
        SET o_toomanyfails = 'N';
    END
.;

Но когда я запускаю то же самое из SQL Tool, я получаю следующую ошибку

> java -jar sqltool-2.4.1.jar --rcfile=C:\my-files\sqltool.rc web C:\my-files\hello.sql
SEVERE  Rolling back SQL transaction.
Exception in thread "main" java.lang.Error: Error: could not match input
        at org.hsqldb.cmdline.sqltool.SqlFileScanner.zzScanError(Unknown Source)
        at org.hsqldb.cmdline.sqltool.SqlFileScanner.yylex(Unknown Source)
        at org.hsqldb.cmdline.SqlFile.scanpass(Unknown Source)
        at org.hsqldb.cmdline.SqlFile.execute(Unknown Source)
        at org.hsqldb.cmdline.SqlTool.objectMain(Unknown Source)
        at org.hsqldb.cmdline.SqlTool.main(Unknown Source)

Я нашел похожий вопрос в переполнении стека. Решение было добавить. в конце. Но даже после добавления. Я получаю ту же ошибку.

Я также добавил "." в первой строке включить необработанный режим. Теперь я получаю другое исключение

.
ALTER CATALOG PUBLIC RENAME TO SOMENAME;

CREATE SCHEMA SOMESCHEMA;

SET DATABASE SQL SYNTAX ORA TRUE;

CREATE PROCEDURE SOMENAME.SOMESCHEMA.SP_FAILED_COUNT(IN i_ssn VARCHAR(100), IN i_page_id NUMBER(10), IN i_ip_address VARCHAR(100), IN i_session_guid VARCHAR(100), OUT o_toomanyfails VARCHAR(2000))
    READS SQL DATA
        BEGIN ATOMIC
        SET o_toomanyfails = 'N';
    END
.;

Исключение

> java -jar sqltool-2.4.1.jar --rcfile=C:\my-files\sqltool.rc web C:\my-files\hello.sql
SEVERE  SQL Error at 'C:\my-files\hello.sql' line 2:
".
ALTER CATALOG PUBLIC RENAME TO SOMENAME"
malformed numeric constant: .
org.hsqldb.cmdline.SqlTool$SqlToolException

1 Ответ

0 голосов
/ 23 марта 2019

Вы начинаете необработанный режим с подачи специальной команды ".".Затем вы можете ввести столько текста в любом формате, который вы хотите.Когда вы закончите, введите строку, состоящую только из ".;"сохранить входные данные в буфере редактирования и отправить его на сервер базы данных для выполнения.

См. Руководство:

http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html#sqltool_raw-sect

...