是否可以创建不需要括号的自定义函数?
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 测试时选择的特定名称模式添加括号。
【讨论】:
以上是关于是否可以创建不需要括号的自定义函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Lua 函数上应用元表以启用它们之间的自定义运算符?