into多個字段,if語句

2021-09-02 12:54:55 字數 2284 閱讀 3245

create or replace procedure sfgl_syncjm_temp(p_czr    in varchar2,

res_str out varchar2,

res_code out varchar2) is

/*** 同步臨時表

* 功能:遍歷減免費用臨時表,先根據應繳使用者、學年、費用型別去更新應繳費用表的'已繳費用'字段(減免就相當於已繳),

* 然後插入一條減免資料到繳費記錄表中,最後統計這個學生減免的總費用更新學生資訊表中的'減免字段'。

* 2023年11月16日

* p_czr 操作人

* res_str 返回執行結果

* res_code 返回結果**

*/v_yjfyid sfgl_yjfy.yjfyid%type; -- 應繳費用表的id

v_fy sfgl_yjfy.fy%type; -- 應繳費用表的費用字段

v_yjfy sfgl_yjfy.yjfy%type; -- 應繳費用表的已繳費用

begin

for rec_jmfy in (select * from sfgl_jmfy_temp) loop

--根據應繳使用者、學年、費用型別查詢應繳費用的id

select a.yjfyid,a.fy,a.yjfy into v_yjfyid,v_fy,v_yjfy

from sfgl_yjfy a

where a.yjyh in (select s.xsid from sfgl_xsxx s where s.xh = rec_jmfy.xh)

and a.xn = rec_jmfy.xn

and a.fylx = rec_jmfy.jmlx

group by a.yjfyid,a.fy,a.yjfy;

--更新應繳費用的'已繳費用'字段,如果應繳費用表中的(已繳費用+減免費用)《費用,則累加已繳費用;

--如果應繳費用表中的已繳費用!=費用 並且 (已繳費用+減免費用)>費用,則直接等於費用;當已繳費用=費用時不操作

if v_fy > (v_yjfy+rec_jmfy.jmje) then

update sfgl_yjfy set yjfy = yjfy+rec_jmfy.jmje where yjfyid = v_yjfyid;

--插入一條減免資料到繳費記錄表

insert into sfgl_jfjl

(jfjlid,yjfyid,jflx,je,sfdy,modified_time,modified_by,create_time,create_by)

values

(xl_sfgl_jfjl.nextval,v_yjfyid,'3',rec_jmfy.jmje,'0',sysdate,p_czr,sysdate,p_czr);

-- 統計減免費用到學生資訊表的'減免費用'字段

update sfgl_xsxx set jmfy = jmfy + rec_jmfy.jmje

where xh = rec_jmfy.xh;

elsif v_fy != v_yjfy and v_fy < (v_yjfy+rec_jmfy.jmje) then

update sfgl_yjfy set yjfy = v_fy where yjfyid = v_yjfyid;

--插入一條減免資料到繳費記錄表

insert into sfgl_jfjl

(jfjlid,yjfyid,jflx,je,sfdy,modified_time,modified_by,create_time,create_by)

values

(xl_sfgl_jfjl.nextval,v_yjfyid,'3',v_fy-v_yjfy,'0',sysdate,p_czr,sysdate,p_czr);

-- 統計減免費用到學生資訊表的'減免費用'字段

update sfgl_xsxx set jmfy = jmfy + v_fy-v_yjfy

where xh = rec_jmfy.xh;

end if;

end loop;

commit;

res_str := '執行成功';

res_code := 's';

exception

when others then

res_str := '執行失敗';

res_code := 'e';

rollback;

end sfgl_syncjm_temp;

----摘自收費管理系統,匯入減免

Oracle語句中多個字段同時in

今天遇到乙個資料庫問題,a,b,c三表。需要從a表中查詢部分資料 select a.a1,a.a2 from a where 從b中刪除對應的資料,即刪除 select b.from b b,select a.a1,a.a2 from a where awhere a.a1 b.b1 and a.a...

group by 多個字段

網上查了很多好像說的都對,但是囉嗦,我看著都費勁 在現實的應用場景中 如果想要統計每個班的男生 女生的數量就可以group by 班級id,性別 如下 select class.name case when students.1 then 男 else 女 end as 1,count studen...

mysql order by多個字段

mysql order by 多欄位排序 mysql單個字段降序排序 select from table order by id desc mysql單個字段公升序排序 select from table order by id asc mysql多個字段排序 select from table o...