机缘
最初成为创作者的初心只是想记录自己在学习过程中遇到的问题、解决方法和小进步,但是在这过程中发现我的博文也能帮助到其他学习者和开发者,在评论区也会有问答解疑,这样的氛围很好,我很喜欢。
收获
有时候回过头来看自己的文章还能帮助解决现有问题;
在创作的过程中获得很多肯定,也会有大佬指出不足,大家一起交流学习。
日常
- 创作已经是我生活的一部分了
- 有限的精力下,工作为主,业余时间学习
成就
提示:你过去写得最好的一段代码是什么? 请用代码块贴出来
DECLARE
V_ERR_MSG NVARCHAR2(2000);--异常信息描述
V_ROW_COUNT NUMBER(20) := 0; -- 返回记录值
V_PERMISSION_COUNT NVARCHAR2(64); -- 功能权限返回值
V_ROLE_NAME_COUNT NUMBER(20) := 0;-- 校验角色名称是否重复
/**
* CREATE BY: xiaoxiao
* CREATE DATE: 2023-12-01 16:29
* MODIFY BY:
* MODIFY DATE:
* DESCRIBE:角色权限-修改操作
*/
BEGIN
-- 校验角色名称是否重复
SELECT COUNT( ROLE_ID )
INTO V_ROLE_NAME_COUNT
FROM BASIC_SYSTEM_ROLE T
WHERE T.ROLE_NAME = :P47_ROLE_NAME
AND T.ROLE_ID != :P47_ROLE_ID
AND T.SYSTEM_TYPE = 'DIAN'
AND T.DEL_FLAG = 0
AND T.TENANT_ID = :USER_TENANT;
IF V_ROLE_NAME_COUNT = 0 THEN -- 角色名称不重复的情况下
-- 修改操作
UPDATE BASIC_SYSTEM_ROLE
SET UPDATED_BY = :USER_ID,
UPDATE_DATE = SYSDATE,
ROLE_LEVEL = :P47_ROLE_LEVEL,
ROLE_NAME = :P47_ROLE_NAME,
IS_SYNC_USER = 1
WHERE ROLE_ID = :P47_ROLE_ID
AND SYSTEM_TYPE = 'DIAN'
AND DEL_FLAG = 0
AND TENANT_ID = :USER_TENANT;
V_ROW_COUNT := SQL%ROWCOUNT;
IF :P47_PERMISSION_IDS IS NOT NULL THEN
-- 晶点-角色管理-功能权限-->模块配置
V_PERMISSION_COUNT := SYSTEM_DIAN_ROLE_PERMISSION_CRUD( 'modify' ,
:P47_ROLE_ID ,
:P47_PERMISSION_IDS ,
:USER_TENANT ,
:USER_ID );
END IF;
IF V_PERMISSION_COUNT = 'error' THEN
V_ROW_COUNT := -1;
END IF;
ELSE
V_ROW_COUNT := -2;
END IF;
if :P47_ROLE_ID=:BASIC_ROLE_ID then
APEX_UTIL.SET_SESSION_STATE( 'BASIC_ROLE_LEVEL' , :P47_ROLE_LEVEL );
end if;
APEX_UTIL.SET_SESSION_STATE( 'P47_ROW_COUNT' , V_ROW_COUNT ); -- 返回结果值
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
V_ERR_MSG := SQLERRM || CHR( 13 ) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
--写入异常日志
JA_WRITE_LOG('P'||:APP_PAGE_ID||'-角色权限-修改', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,:APP_NAME||':'||:APP_ID);
APEX_UTIL.SET_SESSION_STATE( 'P47_ROW_COUNT' , -1 ); -- 返回结果值
END;
create function SYSTEM_DIAN_ROLE_PERMISSION_CRUD(p_operation_type in nvarchar2 ,
p_basic_role_id in number ,
p_permission_range in nvarchar2 ,
p_tenant_id in number ,
p_sys_user_id in number)
return nvarchar2
is
/**
* create by: xiaoxiao
* create date: 2023-11-17 17:23
* modify by:
* modify date:
* describe: 晶点-角色-权限-->从模块配置加载
*/
v_row_count number(20) := 0;-- 返回记录值
v_err_msg nvarchar2(2000);--异常信息描述
cursor c_system_permission is select *
from BASIC_SYSTEM_PERMISSION
where DEL_FLAG = 0
and PERMISSION_ID in (select * from JA_UTILS_PKG.SPLIT_STR(p_permission_range , ':'));
begin
if p_basic_role_id > 0 then
if p_operation_type = 'modify' then
-- 删除 晶点角色管理-功能权限
delete from BASIC_SYSTEM_ROLE_PERMISSION where ROLE_ID = p_basic_role_id and TENANT_ID = p_tenant_id;
end if;
-- 遍历模块配置
for item_permission in c_system_permission
loop
-- 新增 晶点角色管理 功能权限
insert into BASIC_SYSTEM_ROLE_PERMISSION(role_id ,
permission_id ,
tenant_id ,
created_by)
values (p_basic_role_id ,
item_permission.PERMISSION_ID ,
p_tenant_id ,
p_sys_user_id);
v_row_count := v_row_count + SQL%ROWCOUNT;
end loop;
end if;
return v_row_count;
exception
when others then
rollback;
v_err_msg := sqlerrm || chr( 13 ) || dbms_utility.format_error_backtrace;
JA_WRITE_LOG(JA_UTILS_PKG.GET_FN_NAME( ) , 'error' , v_err_msg , p_sys_user_id , p_tenant_id ,'168-晶点');--写入异常日志
return 'error';
end ;
/
憧憬
学好Oracle Apex和PL/SQL的同时,多储备一些其他知识,做复合型人才