SQL 使用动态传入函数会报错

请问这个报错是什么意思?Not allowed to use dynamic function in sql statement

报错的语句是:select dynamicFunc(...) from t context by day

此处 dynamic function 指的是我用参数传进来的 func,也就是 sql 在函数里面执行,函数有一个 func 作为参数,在里面运行这个 func。

sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL
price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
t1 = table(timestamp, sym, qty, price)

//select *, cumsum(qty) from t1 context by sym
//select *, cumsum2(qty) from t1 context by sym

def demo(t, dynamicFunc) {
        return select select *, dynamicFunc(qty) from t context by sym
}

demo(t1, cumsum)
请先 登录 后评论

1 个回答

Polly

3.0 版本 server 开发了这个限制,但 2.0 版本不支持这种调用,可以用 call 实现:

 def demo(t, dynamicFunc) {
        return select *, call(dynamicFunc, qty) from t11 context by sym
}
请先 登录 后评论