Как перевести Sybase SQL на диалект HSQLDB?

Я хотел бы перевести эту очень простую хранимую процедуру с диалекта Sybase SQL на диалект HSQLDB:

CREATE PROCEDURE dbo.some_proc 
AS
BEGIN
SELECT int_param1 FROM control WHERE id_param = "SOME_PARAM" AND id_active = "Y"
END

По моему скромному мнению, документация для HSQLDB очень загадочна в отношении хранимых процедур. Я не мог найти правильный способ сделать это. Я использую HSQLDB версии 2.3.1.


person foundationer    schedule 16.01.2017    source источник


Ответы (1)


Это может быть выражено как ФУНКЦИЯ в HSQLDB.

CREATE FUNCTION some_proc () RETURNS TABLE(VAL INT)
READS SQL DATA
BEGIN ATOMIC
RETURN TABLE(SELECT int_param1 FROM control WHERE id_param = 'SOME_PARAM' AND id_active = 'Y');
END

Функция возвращает таблицу с одной строкой со всеми значениями.

Если ваша процедура всегда возвращает одно значение, объявление может быть другим, чтобы отразить это:

CREATE FUNCTION some_proc2 () RETURNS INT
READS SQL DATA
BEGIN ATOMIC
RETURN (SELECT int_param1 FROM control WHERE id_param = 'SOME_PARAM' AND id_active = 'Y');
END
person fredt    schedule 16.01.2017