从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

 

相关文章:

  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2021-07-15
  • 2022-02-24
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
相关资源
相似解决方案