是否有一种方法可以从PL/PgSQL中的游标中获得随机元素?



我正在学习PostgreSQL中的示例,在处理游标时,我找不到获得单个随机元素的方法。

我看过很多文章和文档,但似乎没有办法做到这一点。输出将是游标中的一个随机数,即游标中的一个随机元素。

不要使用游标。相反,使用返回单个随机值并将其赋值给变量的查询:

num1 := (select num from client order by random() limit 1);

使用本地表的测试用例:

do $$
DECLARE 
rec record;
num1 integer;
ct integer;
cur1 CURSOR FOR
SELECT p_item_no FROM plant1;
fetch_ct integer;
BEGIN
SELECT INTO ct count(*) from plant1;
SELECT INTO fetch_ct (random() * ct)::integer;
open cur1;
fetch relative fetch_ct from cur1 into rec;
num1 = rec.p_item_no;
Raise Notice 'Num: %', num1;
close cur1;
end $$ 
Language 'plpgsql';
NOTICE:  Num: 2742
DO
--Running it again
NOTICE:  Num: 3083
DO
--And again
NOTICE:  Num: 4848
DO

最新更新