從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