あなたのやりたいことがわかりません。あなたは明確な説明をすることができますか?
パラメータにはtable
を受け入れることはできません。パラメータには特定の型、String、Intなどが必要です。したがって、constants
およびcolumns
をパラメータとして使用できます。あなたの意味は、パラメータとしてテーブル名である場合は、次のように、SQLは次のようになります。
SELECT MYTEST22(a), MYTEST(a), MYTEST1(a), COUNT(*)
FROM alisis.table1
WHERE a=max_dt('alisis.table1')
GROUP BY MYTEST22(a),MYTEST(a),MYTEST1(a)
私が知られているように、すべての機能方解石は(バージョンが1.11である)サポートがSqlStdOperatorTable
で定義されています。あなたが他の機能をサポートしたい場合は、例えば、SqlStdOperatorTable
を拡張するクラスを実装することができます
public class TestOperatorTable extends SqlStdOperatorTable {
private static volatile TestOperatorTable instance;
public static TestOperatorTable instance() {
if (instance == null) {
synchronized(TestOperatorTable.class) {
if (instance == null) {
instance = new TestOperatorTable();
// Use reflection to register the expressions stored in public fields.
instance.init();
}
}
}
return instance;
}
/** Follow add your functions */
public static SqlFunction LTRIM = new SqlTrimFunction("LTRIM");
}
SqlTrimFunction
を次のように:あなたはたとえばSqlValidatorImpl
ため、SqlValidatorを作成
public class SqlTrimFunction extends SqlFunction {
public SqlTrimFunction(String funcName) {
super(
funcName,
SqlKind.OTHER_FUNCTION,
ReturnTypes.VARCHAR_2000, // return type is String
InferTypes.FIRST_KNOWN,
OperandTypes.STRING, // parameter type is String
SqlFunctionCategory.STRING
);
}
}
、あなたがすべき最初のパラメータとしてTestOperatorTable
を使用してください。
質問を編集して[これまでのコード](http://whathaveyoutried.com)を表示してください。問題を抱えているコードのアウトライン(ただし、好ましくは[mcve])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –