定义获取部门ID的函数Word格式文档下载.docx
- 文档编号:21806049
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:21
- 大小:21.85KB
定义获取部门ID的函数Word格式文档下载.docx
《定义获取部门ID的函数Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《定义获取部门ID的函数Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
in_OWNER_NAME:
产权单位
in_Self_Code_pre:
自编号前缀
createorreplaceproceduresub_mach_trans(in_math_typeininteger,in_OWNER_NAMEinvarchar2,in_Self_Code_preinvarchar2)is
typet_target_DataISREFCURSOR;
--目标数据类型
v_CursorVart_target_Data;
--定义类型游标
--可以从目标表中获取的变量
v_MACH_NAME项目部机具.设备名称%TYPE;
--机具名称;
v_MACH_SPEC项目部机具.规格型号%TYPE;
--规格型号;
v_ORIGINAL_VALUE项目部机具.原值%TYPE;
--机具原值
v_CUR_VALUE项目部机具.净值%TYPE;
--机具净值
v_CUR_USED_DEPTID_name项目部机具.使用单位%TYPE;
--使用单位名称
v_VALUE_TYPE项目部机具.分类%TYPE;
--机具价值分类
v_MACH_UNIT_NAME项目部机具.单位%TYPE;
--计量单位名称
v_ID项目部机具.序号%TYPE;
--序号
v_COMMENTS项目部机具.备注%TYPE;
--备注信息
v_AMORTISE_PRICE项目部机具.十月摊销%TYPE;
--摊销单价
--需要计算或定义的变量
v_CUR_USED_DEPTIDinteger;
--使用部门编号
v_MACH_UNITinteger;
--计量单位编号
v_MACH_BASE_TYPEinteger:
=2;
--基础设备类型
v_SELF_CODEvarchar2(50):
='
'
;
--自编号
v_CUR_STATEinteger;
--当前状态
v_Value_Type_numinteger:
=0;
--价值分类数值表述变量
v_Record_cur_indexinteger;
--当前记录Id
v_HANDOVER_Counterinteger:
--领用记录计数器
--系统调试用变量
S_Process_Counterinteger:
--系统异常对象
SYS_DEBUG_EXCEXCEPTION;
v_ErrorCodeNUMBER;
--出错的代码
v_ErrorMsgVARCHAR2(200);
--错误的消息显示
v_CurrentUserVARCHAR2(8);
--当前数据库用户
v_InformationVARCHAR2(100);
--关于错误的信息
begin
--读取数据
OPENv_CursorVarFOR
SELECT设备名称,规格型号,原值,净值,使用单位,分类,单位,序号,备注,十月摊销FROM项目部机具orderby序号;
--遍历数据
LOOP
--从游标中提取记录值赋予制定变量
FETCHv_CursorVarINTOv_MACH_NAME,v_MACH_SPEC,v_ORIGINAL_VALUE,v_CUR_VALUE,v_CUR_USED_DEPTID_name,v_VALUE_TYPE,v_MACH_UNIT_NAME,v_Id,v_COMMENTS,v_AMORTISE_PRICE;
--退出条件
EXITWHENv_CursorVar%NOTFOUND;
--工作代码
v_CUR_USED_DEPTID:
=Get_Dept_Id(v_CUR_USED_DEPTID_name);
v_MACH_UNIT:
=Get_Unit_Id(v_MACH_UNIT_NAME);
v_SELF_CODE:
=in_Self_Code_pre||to_char(v_Id);
ifv_CUR_USED_DEPTID=1then
v_CUR_STATE:
else
endif;
--价值分类
ifv_VALUE_TYPE='
A'
then
v_Value_Type_num:
ELSIFv_VALUE_TYPE='
B'
v_Value_Type_num:
C'
=3;
D'
=4;
--执行复制到mach_basic_info表
insertintomach_basic_info
(
id,
MACH_NAME,
MACH_TYPE,
MACH_SPEC,
OWNER_NAME,
ORIGINAL_VALUE,
CUR_VALUE,CUR_STATE,
CUR_USED_DEPTID,
VALUE_TYPE,
MACH_UNIT,
MACH_UNIT_NAME,
MACH_BASE_TYPE,
comments,
self_code
)
values
seq_mach_basic_info.nextval,
v_MACH_NAME,
in_math_type,
v_MACH_SPEC,
in_OWNER_NAME,
CAST(v_ORIGINAL_VALUEASnumber(22,4)),
CAST(v_CUR_VALUEASnumber(22,4)),
v_CUR_STATE,v_CUR_USED_DEPTID,
v_Value_Type_num,
v_MACH_UNIT,
v_MACH_UNIT_NAME,
v_MACH_BASE_TYPE,
v_COMMENTS,
v_SELF_CODE
);
--记录当前记录id
selectmax(id)intov_Record_cur_indexfrommach_basic_info;
--插入记录到MACH_AMOR_ATTACH_INFO表:
摊销价格表
insertintoMACH_AMOR_ATTACH_INFO
MACH_ID,
AMORTISE_PRICE,
COMMENTS
seq_MACH_AMOR_ATTACH_INFO.Nextval,
v_Record_cur_index,
cast(v_AMORTISE_PRICEASnumber(22,6)),
'
2006-11-18,程序自动导入,凭据:
10月摊销金额'
--插入记录到MACH_HANDOVER_RECORD表:
领用记录表
ifv_CUR_STATE=1then
insertintoMACH_HANDOVER_RECORD
MACH_ID,--设备序号
ORDER_CODE,--交接单号
HANDOVER_DATE,--交接日期
HANDOVER_SPAN_CODE,--交接日期所在财务月
FROM_DEPTID,--移交单位
TO_DEPTID,--接收单位
HANDOVER_STATE,--交接单状态(枚举0:
未交接1:
已交接2:
已退库)
AMORTISE_MONEY,--摊销单价(若为空自动从台帐中读取)
seq_MACH_HANDOVER_RECORD.Nextval,
领_2006_10_'
||to_char(v_HANDOVER_Counter),
to_date('
2006-10-01'
'
yyyy-mm-dd'
),
200610C'
1,
v_CUR_USED_DEPTID,
--计数器加1
v_HANDOVER_Counter:
=v_HANDOVER_Counter+1;
--输出信息
dbms_output.put_line('
当前完成:
||v_MACH_NAME);
S_Process_Counter:
=S_Process_Counter+1;
累计完成:
||to_char(S_Process_Counter));
--调试异常
/*
ifS_Process_Counter=2then
RaiseSYS_DEBUG_EXC;
*/
ENDLOOP;
--关闭游标
CLOSEv_CursorVar;
--提交事务
commit;
--异常处理
--自定义异常
whenSYS_DEBUG_EXCthen
异常调试,自动回滚'
);
--回滚事务
rollback;
--其他异常
v_ErrorCode:
=SQLCODE;
v_ErrorMsg:
=SQLERRM;
v_CurrentUser:
=USER;
v_Information:
遇到了错误'
||TO_CHAR(SYSDATE)||'
数据库用户'
||v_CurrentUser;
执行错误,自动回滚'
详细信息:
||'
错误代码:
||v_ErrorCode||'
错误消息:
||v_ErrorMsg||'
日志信息:
||v_Information);
endsub_mach_trans;
--存储过程调用代码
setserverouton--开启系统输出
executesub_mach_trans(334,'
自购'
'
项目部-'
--历史镜像
selectmax(id)frommach_basic_infot
--检查结果
select*frommach_basic_infowhereid>
3217
select*fromdict_deptswheredept_namelike'
%物资部%'
--idis9
%水工厂%'
--idis2418
select*frommater_stock_dictwherenamelike'
%钢材%'
--idis885
--idis1226
select*frommater_out_stock_basewherereceive_dept_id=2418andout_stock_id=885andid=23231
select*frommater_out_stock_detailwherebase_id=23231
select*frommater_in_stock_basewherein_stock_id=1226
select*frommater_in_stock_detailwherebase_id=14142
--辅助功能函数
createorreplacefunctionGetSubStorageBillNo
(
in_SubStorageBillNoPreinvarchar2,--二级入库单编号前缀,如'
工矿-'
电-'
办公-'
等
in_BuyTypeininteger,----物资购买类型(1:
统供;
2:
自购)
in_SubStorageIdininteger,--二级库ID号
in_yearCodeinvarchar,--当前记录所在财务年
in_monthCodeinvarchar--当前记录所在财务月
)
returnvarchar
as
v_billNovarchar2(50);
v_CurBillNovarchar2(50);
v_returnBillNovarchar2(50);
v_buyTypeCharvarchar2
(2);
v_Increment_idinteger;
v_Query_Novarchar2(50);
v_RecordCounterinteger;
begin
ifin_BuyType=1then
v_buyTypeChar:
统'
自'
--Demo:
水暖-自2006-11105
v_billNo:
=in_SubStorageBillNoPre||v_buyTypeChar||to_char(in_yearCode)||'
-'
||to_char(in_monthCode);
v_Query_No:
=v_billNo||'
%'
||v_Query_No||'
--获取同类单据最大编号
executeimmediate'
selectt.bill_nofrommater_in_stock_basetwheret.in_stock_id='
||to_char(in_SubStorageId)||'
andt.bill_nolike'
||v_Query_No||'
andt.bill_noisnotnullandrownum=1orderbyt.create_timedesc'
intov_CurBillNo;
ifv_CurBillNo=nullthen
--首张单据
v_returnBillNo:
||to_char(in_monthCode)||'
1'
theSqlvaluesis:
selectmax(cast(replace(t.bill_no,'
||v_billNo||'
)asnumber))frommater_in_stock_basetwheret.in_stock_id='
themaxv_CurBillNovaluesis:
||v_CurBillNo);
--钢-自2006-071
--重新组合最终单据编号
=v_billNo||to_char(cast(v_CurBillNoasnumber)+1);
afterrebuildv_returnBillNovaluesis:
||v_returnBillNo);
v_returnBillNovaluesis:
returnv_returnBillNo;
Exception
--dbms_output.put_line('
错误内容:
||SQLERRM);
endGetSubStorageBillNo;
--存储过程主体
自动根据大库出库单形成二级库入库单,适用于某部门一直在大库中领料但最近才开启二级仓库业务
适用时请注意修改OPENv_Base_CursorVarFOR部分
createorreplaceprocedureAutoTransSubStorage
in_MainStorageIdininteger,--大库ID号
in_SubStorageIdininteger,--二级库ID号
in_SubDeptIdininteger,--二级库部门ID号
in_MainStorageMgrDeptIdininteger,--大库管理员所在部门ID号
in_MainStorageMgrUserIdinvarchar2,--大库管理员用户ID
in_SubStorageBillNoPreinvarchar2--二级入库单编号前缀,如'
is
typet_target_DataISREFCURSOR;
v_Base_CursorVart_target_Data;
v_Detail_CursorVart_target_Data;
--可以从目标表中获取的变量
v_m_o_s_b_idmater_out_stock_base.id%TYPE;
--序列号
v_m_o_s_b_bill_nomater_out_stock_base.bill_no%TYPE;
--单据编码
v_m_o_s_b_pact_codemater_out_stock_base.pact_code%TYPE;
--合同编码
v_m_o_s_b_buy_typemater_out_stock_base.buy_type%TYPE;
--物资购买类型(1:
v_m_o_s_b_out_stock_idmater_out_stock_base.out_stock_id%TYPE;
--出库仓库编号
v_m_o_s_b_receive_dept_idmater_out_stock_base.receive_dept_id%TYPE;
--领料部门编号
v_m_o_s_b_bill_typemater_out_stock_base.bill_type%TYPE;
--单据类型(1:
调拨单;
领料单;
3:
价拨单)
v_m_o_s_b_action_typemater_out_stock_base.action_type%TYPE;
--单据操作类型(1:
一般单据;
冲红单据;
3:
库存损耗冲帐单据)
v_m_o_s_b_produce_statemater_out_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定义 获取 部门 ID 函数