H SQL проблема при использовании значения TIMESTAMP в качестве параметра IN в хранимой процедуре - PullRequest
0 голосов
/ 19 февраля 2020

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

С учетом следующего 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');

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

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

1 Ответ

0 голосов
/ 19 февраля 2020

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

CALL TEST_PROC('key2', TIMESTAMP'2020-02-19 12:17:53');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...