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...