在DolphinDB中,我想编写一个函数,该函数将表t
和字符串colName
作为参数,并根据t
和colName
运行SQL查询。 。我的代码是这样的:
def doQuery(t, colName) {
return select colName from t
}
但是此函数将返回一个仅包含一个元素colName
的表,无论我提供的参数是什么。
例如,当我跑步时
t = table(1..5 as col0)
doQuery(t, `col0)
我所期望的是列col0
包含元素1
,2
,3
,4
和5
,而我得到了是
colName
-------
col0
我想知道我的代码有什么问题。
答案 0 :(得分:1)
在sql语句中,必须显式地写下select子句中的列名。这是几乎所有数据库(包括DolphinDB)的规则。在您的情况下,列名由函数参数动态传递。也就是说,在编写代码(SQL查询)时无法指定列。但是,DolphinDB提供元编程技术来为您解决确切的问题。
def doQuery(t, colName) {
return sql(sqlCol(colName), t).eval()
}
http://www.dolphindb.com/help/index.html?Metaprogramming.html