gpt4 book ai didi

mysql - 使用动态参数创建一个 MySQL 存储函数

转载 作者:可可西里 更新时间:2023-11-01 07:04:34 25 4
gpt4 key购买 nike

我正在尝试创建一个 MySQL 函数 IS_IN_ENUM('value', 'val1', 'val2', 'val3') 如果 'value' 在 ('val1', 'val2','val3')。我知道我可以执行 SELECT 'value' IN ('val1', 'val2', 'val3') 但这没那么有趣,因为我只想学习如何创建此类函数。

我给你举个例子,考虑下面的ADD函数:

CREATE FUNCTION my_add (
a DOUBLE,
b DOUBLE
)
RETURNS DOUBLE
BEGIN

IF a IS NULL THEN
SET a = 0;
END IF;

IF b IS NULL THEN
SET b = 0;
END IF;

RETURN (a + b);
END;

如果我执行 SELECT my_add(1, 1),我会得到 2(哇!)。

我怎样才能改进这个函数以便能够调用:

SELECT my_add(1, 1); -- 2
SELECT my_add(1, 1, 1); -- 3
SELECT my_add(1, 1, 1, 1); -- 4
SELECT my_add(1, 1, 1, 1, 1, 1, .....); -- n

最佳答案

您展示的函数示例是一个存储函数,而不是一个 UDF。正如@Enzino 回答的那样,MySQL 中的存储函数不支持可变数量的参数。

MySQL UDF 是用 C 或 C++ 编写的,编译成动态目标​​文件,然后通过 different syntax of CREATE FUNCTION 链接到 MySQL 服务器。 .

参见 http://dev.mysql.com/doc/refman/5.5/en/adding-udf.html有关编写 UDF 的详细信息。但我不知道您是否想开始编写 C/C++ 代码来执行此操作。

MySQL UDF 确实支持可变数量的参数。事实上,所有 UDF 都隐含地接受任意数量的参数,作为程序员,由您来确定给定参数的数量和数据类型是否对您的函数有效。

UDF 中的处理函数参数记录在 http://dev.mysql.com/doc/refman/5.5/en/udf-arguments.html

关于mysql - 使用动态参数创建一个 MySQL 存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761672/

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