gpt4 book ai didi

java - 创建用户定义函数 : if already exists?

转载 作者:行者123 更新时间:2023-11-30 08:50:59 25 4
gpt4 key购买 nike

我正在使用 azure-documentdb java SDK为了创建和使用“用户定义函数 (UDF)”

因此来自 official documentation我终于找到了如何创建 UDF 的方法(使用 Java 客户端):

String regexUdfJson = "{"
+ "id:\"REGEX_MATCH\","
+ "body:\"function (input, pattern) { return input.match(pattern) !== null; }\","
+ "}";
UserDefinedFunction udfREGEX = new UserDefinedFunction(regexUdfJson);
getDC().createUserDefinedFunction(
myCollection.getSelfLink(),
udfREGEX,
new RequestOptions());

这是一个示例查询:

SELECT * FROM root r WHERE udf.REGEX_MATCH(r.name, "mytest_.*")

我不得不创建一次 UDF,因为如果我尝试重新创建一个现有的 UDF,我会遇到异常:

DocumentClientException: Message: {"Errors":["The input name presented is already taken. Ensure to provide a unique name property for this resource type."]}

我应该如何知道 UDF 是否已经存在?我尝试使用“readUserDefinedFunctions”函数但没有成功。任何例子/其他想法?

也许从长远来看,我们是否应该建议在 azure feedback 上使用“createOrReplaceUserDefinedFunction(...)”

最佳答案

您可以使用 queryUserDefinedFunctions 运行查询来检查现有的 UDF。

例子:

List<UserDefinedFunction> udfs = client.queryUserDefinedFunctions(
myCollection.getSelfLink(),
new SqlQuerySpec("SELECT * FROM root r WHERE r.id=@id",
new SqlParameterCollection(new SqlParameter("@id", myUdfId))),
null).getQueryIterable().toList();
if (udfs.size() > 0) {
// Found UDF.
}

关于java - 创建用户定义函数 : if already exists?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com