1

在 DolphinDB 中,我想编写一个函数,它将一个表t和一个字符串colName作为参数,并根据 and 运行 SQLt查询colName。我的代码是这样的:

def doQuery(t, colName) {
    return select colName from t
}

colName但是无论我给出什么参数,这个函数都会返回一个只包含一个元素的表。

例如,当我跑

t = table(1..5 as col0)
doQuery(t, `col0)

我期望的是col0包含元素1, 2,和3,而我得到的是45

colName
-------
col0

我想知道我的代码有什么问题。

4

1 回答 1

0

在 sql 语句中,必须在 select 子句中明确写下列名。这是几乎所有数据库的规则,包括 DolphinDB。在您的情况下,列名由函数参数动态传递。也就是写代码(sql查询)的时候不能指定列。但是,DolphinDB 提供了元编程技术来解决确切的问题。

def doQuery(t, colName) {
    return sql(sqlCol(colName), t).eval()
}

http://www.dolphindb.com/help/index.html?Metaprogramming.html

于 2019-04-30T21:32:22.940 回答