А что ты ожидал ?
Аргумент HASH приводится внутри к строке и уже она хешируется.
Уж не знаю хорошо это или где...
Меня бы вполне устроило если бы он приводил к строке, ноон то приводит,
то не приводит. Вот полный вариант:
EXECUTE BLOCK (
"Value" BLOB SUB_TYPE TEXT = ?VALUE )
RETURNS (
"Type" VARCHAR(20),
"Hash" BIGINT )
AS
BEGIN
"Type" = 'BLOB TEXT';
"Hash" = HASH(CAST("Value" AS BLOB SUB_TYPE TEXT));
SUSPEND;
"Type" = 'BIGINT';
"Hash" = HASH(CAST("Value" AS BIGINT));
SUSPEND;
"Type" = 'INT';
"Hash" = HASH(CAST("Value" AS INT));
SUSPEND;
"Type" = 'SMALLINT';
"Hash" = HASH(CAST("Value" AS SMALLINT));
SUSPEND;
"Type" = 'VARCHAR(100)';
"Hash" = HASH(CAST("Value" AS VARCHAR(100)));
SUSPEND;
"Type" = 'DOUBLE PRECISION';
"Hash" = HASH(CAST("Value" AS DOUBLE PRECISION));
SUSPEND;
"Type" = 'FLOAT';
"Hash" = HASH(CAST("Value" AS FLOAT));
SUSPEND;
"Type" = 'NUMERIC(18, 4)';
"Hash" = HASH(CAST("Value" AS NUMERIC(18, 4)));
SUSPEND;
"Type" = 'NUMERIC(15, 2)';
"Hash" = HASH(CAST("Value" AS NUMERIC(15, 2)));
SUSPEND;
"Type" = 'DECIMAL(18, 4)';
"Hash" = HASH(CAST("Value" AS DECIMAL(18, 4)));
SUSPEND;
"Type" = 'DECIMAL(15, 2)';
"Hash" = HASH(CAST("Value" AS DECIMAL(15, 2)));
SUSPEND;
END