自定义函数
创建用户自定义函数(UDF)
Lua 是为 SmartESQL 编写用户自定义函数(UDF)的最佳选择,因为它们被嵌入到服务器中,并在服务器上下文中执行,从而使数据处理尽可能靠近数据。由于 UDF 是查询的一部分,所以它是在特定连接和事务的上下文中执行的。可以从 UDF 访问 Connection 对象,并执行用于数据检索和数据更新的 SQL 语句,以实现更复杂的查询。
值返回型UDF
以下语句创建了一个简单的值返回函数,该函数接收一个整数并对其执行一些简单的操作:
create function twice(x integer) returns integer in 'lua' as 'return x+x end';
要调用此函数,请执行如下语句:
XSQL>select twice(2);
数据集返回型UDF
如果返回的是一个表,那么它可以在 SQL 查询中的任何上下文中使用,就像使用任何其他表或数据集一样。返回结果集的用户定义函数(UDF)会将数据库中的某个表作为其自身结果集的定义。因此,首先需要创建一个定义 UDF 结果集的表。例如:
create table qt1
(
dt int,
sym string,
putorcall char(1),
strikePrice real
);
然后我们可以定义一个用户自定义函数(UDF),使其返回此表。例如:
CREATE FUNCTION q1(syms array(string), d int) returns qt1 in 'lua' as '
local ret = {
{dt=101010, sym="AAPL", putorcall="C", strikePrice=10.1},
{dt=101010, sym="IBM", putorcall="C", strikePrice=40.1}
}
return ret
end';