Проблема HSQL при использовании значения TIMESTAMP в качестве параметра IN в хранимой процедуре

Обзор Параметр HSQL IN типа TIMESTAMP не работает должным образом для хранимой процедуры HSQL.

Учитывая следующий DDL:

CREATE TABLE TS_STORE (
    ID_COL VARCHAR(20) NOT NULL PRIMARY KEY,
    TS TIMESTAMP
);

Оператор DML, такой как:

INSERT INTO TS_STORE (ID_COL, TS) VALUES ('key1', '2020-02-19 12:17:53');

успешно вставит строку.

Затем, когда я пытаюсь создать хранимую процедуру, чтобы сделать то же самое, что и:

CREATE PROCEDURE TEST_PROC(IN IN_KEY VARCHAR(20), IN IN_TS TIMESTAMP)
    MODIFIES SQL DATA
BEGIN ATOMIC
    INSERT INTO TS_STORE(ID_COL, TS)
    VALUES (IN_KEY, IN_TS);
END;

и попытайтесь назвать это как:

CALL TEST_PROC('key2', '2020-02-19 12:17:53');

Затем я получаю сообщение об ошибке: «несовместимый тип данных при преобразовании».

Это проблема для меня, так как мне не разрешено изменять подпись хранимой процедуры, чтобы обойти проблему, поскольку в моем случае HSQL используется в качестве макета для производственной базы данных (DB2), где эквивалентная процедура работает должным образом .


person garfield    schedule 19.02.2020    source источник


Ответы (1)


Это работает, если вы вызываете процедуру со значением TIMESTAMP, а не со строкой символов.

CALL TEST_PROC('key2', TIMESTAMP'2020-02-19 12:17:53');
person fredt    schedule 19.02.2020