在DBVisualizer中创建HSQLDB过程



我正在尝试通过dbvisualizer客户端创建以下简单的HSQLDB过程。

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure(OUT my_output INTEGER, IN my_input INTEGER)
        MODIFIES SQL DATA -- NO SQL
        BEGIN ATOMIC
                SET my_output = my_input;
        END

错误消息:

[CREATE - 0 rows, 0.001 secs]  [Code: -5590, SQL State: 42590]  unexpected end of statement:  required: ; : line: 3
[END - 0 rows, 0.000 secs]  [Code: -5581, SQL State: 42581]  unexpected token: END
... 2 statement(s) executed, 0 rows affected, exec/fetch time: 0.001/0.000 sec  [0 successful, 2 errors]

看来;的解释存在问题,但是我在HSQLDB中找不到任何相当于MySQl delimiter的东西。

我如何解决这个问题?

在dbvisualizer中,我可以使用dbvisualizer特定的定界符。

@delimiter ++;
DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure(OUT my_output INTEGER, IN my_input INTEGER)
        MODIFIES SQL DATA -- NO SQL
        BEGIN ATOMIC
                SET my_output = my_input;
        END
;
++
@delimiter ;++

来自dbvisualizer文档:

使用@delimiter命令

使用@delimiter命令,您可以暂时更改语句 定界符DBVisualizer用来分开语句并将其发送 一一接近数据库。在复杂语句之前使用它,然后 在语句之后,如果脚本包含其他语句。 这是一个例子:

@delimiter ++;
CREATE OR REPLACE FUNCTION HELLO (p1 IN VARCHAR2) RETURN VARCHAR2
AS
BEGIN
 RETURN 'Hello ' || p1;
END;
++
@delimiter ;++
@call ${returnValue||(null)||String||noshow dir=out}$ = HELLO('World');
@echo returnValue = ${returnValue}$;

第一个@delimiter命令将定界符设置为 ,以便 默认 ;定界符可以在创建中的功能体内使用 陈述。然后,使用 定界符来结束创建语句, 另一个@delimiter命令将定界符设置为;为了 脚本中的剩余命令。

相关内容

  • 没有找到相关文章

最新更新