0

我想将这个非常简单的存储过程从 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 版。

4

1 回答 1

0

这可以表示为 HSQLDB 中的 FUNCTION

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
于 2017-01-16T20:17:29.167 回答