从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