Stored procedures 在存储过程中将时间戳值用作IN参数时出现HSQL问题

Stored procedures 在存储过程中将时间戳值用作IN参数时出现HSQL问题,stored-procedures,hsqldb,sql-timestamp,Stored Procedures,Hsqldb,Sql Timestamp,概述TIMESTAMP类型的参数中的HSQL不能像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'); 将成功插入一行 然后,当我尝试创建存储过程时,执行

概述TIMESTAMP类型的参数中的HSQL不能像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)的模拟,其中等价的过程按预期工作。

若您使用时间戳值调用该过程,它就会工作,与字符串相反

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