PostgreSQL 游标指定特定列的值赋值给某个变量

从Fetch cursor_var into var1,var2;

它是把查询出来的列按顺序赋值过去的,每一个Fetch是一行,每一个into是一列,var1,var2分别对应数据行的第一列和第二列,不需要定义变量的名称和列名一致。

 

-- 如果存在该存储过程就删除
drop function if exists function_test3();
-- replace之前先调用了drop是因为如果返回值不同是不能直接替换的
create or replace function function_test3() returns void as
-- 标记开始和起始位置,用$$和$$也可以,主要是查询存储过程的结果是用的$BODY$
$BODY$
declare project_id varchar(24);
declare project_id1 varchar(24);
declare emprest CURSOR for select * from saas_bi_basic_project_record;
num int;
begin
 select count(*) from saas_bi_basic_project_record into num;
open emprest;
LOOP
    FETCH emprest into project_id,project_id1;
    raise notice '%', project_id1;
    num = num - 1;
if num = 0 then exit; end if;
END LOOP;
close emprest;
    END
$BODY$
LANGUAGE plpgsql; 

-- 调用存储过程
select function_test3();
-- 调用存储过程
select function_test3()
> 注意:  ab123
> 注意:  sdf
> OK
> 时间: 0.001s

 

posted on 2020-10-08 13:05  我欲皆真  阅读(1195)  评论(0编辑  收藏  举报

导航