是否可以创建不需要括号的自定义函数?

Posted

技术标签:

【中文标题】是否可以创建不需要括号的自定义函数?【英文标题】:Is it possible to create a custom function that does not require parentheses? 【发布时间】:2014-03-05 02:19:20 【问题描述】:

我正在尝试模拟一个没有任何 JUNIT 测试参数的 Oracle 函数。在内部,HSQLDB 必须有这个,因为 CURRENT_TIMESTAMP 不需要括号。

我想做这样的事情:

set database sql syntax ORA false;

CREATE SCHEMA DATE_FUNCTION AUTHORIZATION DBA;

CREATE FUNCTION DATE_FUNCTION.HIGH_DATE() RETURNS DATE
LANGUAGE SQL
RETURN DATE '9999-12-31';

set database sql syntax ORA true;

select DATE_FUNCTION.HIGH_DATE from dual;

我得到了这个错误:

Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: DATE_FUNCTION.HIGH_DATE
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source)

它适用于:

select DATE_FUNCTION.HIGH_DATE() from dual;

这对我来说不是一个选项,因为我无法在原始代码中添加括号。

感谢您的帮助。

问候,

肖恩

【问题讨论】:

【参考方案1】:

HSQLDB 尚不支持在不添加括号的情况下调用函数。未来的版本可能会支持此兼容性。您可以将 Java 代码添加到您的测试中,以便为您在使用 HSQLDB 测试时选择的特定名称模式添加括号。

【讨论】:

以上是关于是否可以创建不需要括号的自定义函数?的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL的自定义函数

如何在 Lua 函数上应用元表以启用它们之间的自定义运算符?

Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现

您可以为 nxlog 创建自定义过滤器模块或函数吗?

Hive的自定义函数

Python教学课程分享8-函数