我的创作纪念日

本文讲述了作者从记录学习过程中的问题解决到成长为技术社区的贡献者,分享了在OracleApex和PL/SQL开发中取得的成就,以及对成为复合型人才的憧憬。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机缘

最初成为创作者的初心只是想记录自己在学习过程中遇到的问题、解决方法和小进步,但是在这过程中发现我的博文也能帮助到其他学习者和开发者,在评论区也会有问答解疑,这样的氛围很好,我很喜欢。


收获

有时候回过头来看自己的文章还能帮助解决现有问题;

在创作的过程中获得很多肯定,也会有大佬指出不足,大家一起交流学习。


日常

  1. 创作已经是我生活的一部分了
  2. 有限的精力下,工作为主,业余时间学习

成就

提示:你过去写得最好的一段代码是什么? 请用代码块贴出来

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的同时,多储备一些其他知识,做复合型人才

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值