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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM