gpt4 book ai didi

mysql - 如何将 "array"的值传递给我的存储过程?

转载 作者:IT老高 更新时间:2023-10-29 00:11:29 28 4
gpt4 key购买 nike

我希望能够将值的“数组”传递给我的存储过程,而不是连续调用“添加值”过程。

有谁能推荐一种方法吗?我在这里遗漏了什么吗?

编辑:我将使用 PostgreSQL/MySQL,我还没有决定。

最佳答案

正如 Chris 所指出的,在 PostgreSQL 中这没有问题 - 任何基本类型(如 int、text)都有自己的数组子类型,您还可以创建自定义类型,包括复合类型。例如:

CREATE TYPE test as (
n int4,
m int4
);

现在您可以轻松创建测试数组:

select ARRAY[
row(1,2)::test,
row(3,4)::test,
row(5,6)::test
];

您可以编写一个函数,将数组中的每个项目乘以 n*m,并返回乘积的总和:

CREATE OR REPLACE FUNCTION test_test(IN work_array test[]) RETURNS INT4 as $$
DECLARE
i INT4;
result INT4 := 0;
BEGIN
FOR i IN SELECT generate_subscripts( work_array, 1 ) LOOP
result := result + work_array[i].n * work_array[i].m;
END LOOP;
RETURN result;
END;
$$ language plpgsql;

并运行它:

# SELECT test_test(
ARRAY[
row(1, 2)::test,
row(3,4)::test,
row(5,6)::test
]
);
test_test
-----------
44
(1 row)

关于mysql - 如何将 "array"的值传递给我的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404941/

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