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