oralcle 儲存過程批處理

2022-09-02 07:12:10 字數 2802 閱讀 7696

create or replace procedure typehind

ascursor typeall is select id,name from tbl_en_type;   --查詢出來所有分類

cursor hournum is select en_val_org,en_val_std,en_cost,unit_id,super_id,inds_id,en_type_id,stand_coe from tbl_unit_en_type_hour

where to_date(sysdate-1,'dd-mon-yyyy')  = to_date(en_date,'dd-mon-yyyy');

typeallid varchar2(32);

hourtype varchar2(32);

envalorg number;

envalstd  number;

encost number;

typeid varchar2(32);

flag number;

begin

envalstd :=0;

encost :=0;

envalorg :=0;

flag := 0;

for typeallid in typeall loop --迴圈所有類別

begin

--dbms_output.put_line(typeallid.id);    

typeid :=typeallid.id;

for hourtype in hournum loop  --迴圈所有小時表

begin

if(typeallid.id=hourtype.en_type_id)then

begin

flag :=1;

dbms_output.put_line('nnnnnnnnnnnnn');

envalstd := envalstd + hourtype.en_val_std;

encost := encost + hourtype.en_cost;

envalorg :=envalorg + hourtype.en_val_org;

--dbms_output.put_line(envalstd);

--dbms_output.put_line(encost);

end;

end if;

end;

end loop;

if(flag = 1)then

begin

insert into tbl_unit_en_type_day ( id,en_val_org, en_val_std, unit_id, super_id, inds_id, en_type_id, en_date, created_date, created_by, created_prg_nm, updated_date, updated_by, updated_prg_nm, modify_count, stand_coe, count_flag, en_cost)

-- user_seq.nextval  序列

values ( user_seq.nextval,envalorg,envalstd , '402881043ad9b54f013ad9cd7d260008', '402881fa3a687abb013a688885f1000b', '402881ef3b5f0667013b5f082db60002',typeid , sysdate, sysdate, 'system', 'system', sysdate, 'system', 'system', '0', '0', '0', encost);

commit;

flag :=0;     --復原flag      

envalstd :=0;  --清空std值

encost :=0;  -- 清空cost值

envalorg :=0;  -- 清空org值

end;

end if;

end;

end loop;

end;

執行:set serveroutput on;

execute typehind;

序列:create sequence user_seq

minvalue 1 --最小值

maxvalue 999999999999999999999999999  --最大值

increment by 1 --用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表oracle序列的值是按照此步長遞減的

start with 41 --定義序列的初始值(即產生的第乙個值),預設為1

cache 20   --定義存放序列的記憶體塊的大小,預設為20。nocache表示不對序列進行記憶體緩衝。對序列進行記憶體緩衝,可以改善序列的效能

noorder nocycle ;  --表示當序列生成器的值達到限制值後是否迴圈。cycle代表迴圈,nocycle代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值

執行有輸出的儲存過程:

set serveroutput on;

declare

std number;

org number;

cost number;

begin

typehind(std,org,cost);

dbms_output.put_line('envalstdall:'||std);

dbms_output.put_line('encostall:'||org);

dbms_output.put_line('envalorgall:'||cost);

end;

Java JDBC呼叫批處理 儲存過程 事務

一 使用batch批量處理資料庫 當需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率。1 實現批處理有兩種方式,第一種方式 statement.addbatch sql list 執行批處理sql語句 executebatch 方法...

mysql 儲存過程 游標完成批處理

本例作用 配置線入參為空,則將當前使用者維護所有配置線關係。配置線入參非空,則維護當前使用者配置線關係。delimiter 自定義結束符 drop procedure if exists insert user branch ralation 刪除已有的儲存過程 create procedure i...

JDBC之批處理 事務 儲存過程

當需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率。實現批處理有兩種方式,第一種方式 statement.addbatch sql list 執行批處理sql語句 executebatch 方法 執行批處理命令 clearbatch...