weixin_38647584 2023-01-16 16:46 采纳率: 75%
浏览 24
已结题

oracle数据库函数问题

最近维护一个旧项目,用的数据库是oracle的,里面有个数据库函数,但是注释都是乱码了,尝试解决了 都没翻译过来,希望大家帮我看看,个人对数据库函数一知半解的,求解惑

```sql
CREATE OR REPLACE FUNCTION SPLIT_QUERY_NICKNAME(piv_str_a varchar2,
                                       p_sep     varchar2 := ',')
  RETURN varchar2 IS  --????????????
  l_idx         number := 0; --????????????
  init_index    number := 0;  -- ??????????
  str           varchar2(500); -- ????????????????
  piv_str       varchar2(500) := piv_str_a; -- ??piv_str2??????piv_str
  nick_name_str VARCHAR2(200); --????????????
  res           VARCHAR(200);   -- ????????
BEGIN
  
  IF instr(piv_str, p_sep, 1) = 0 THEN  -- ????????????????????????????????????????????????????????????
  
    SELECT NICK_NAME
      INTO nick_name_str 
      from SYS_USER su
      where su.user_name = piv_str;
           IF nick_name_str is not NULL THEN
                res := nick_name_str;
      else 
          nick_name_str := to_char('????????????');
           res := nick_name_str;
       end if;

  ELSE
  --????????????????????????
    BEGIN
      LOOP
      
        l_idx := instr(piv_str, p_sep);  --??????????????????????
        IF l_idx > 0 THEN      
        
          str := substr(piv_str, 1, l_idx - 1);--????????1??????????????????????????
          SELECT NICK_NAME
            INTO nick_name_str
            from SYS_USER su
           where su.user_name = str;
          if init_index = 0 then  --??????????????????????????????/????????????????????????
            res        := nick_name_str;
            init_index := 1;
          else
            res := concat(res, concat('/', nick_name_str)); -- ????????????????
          end if;
          piv_str := substr(piv_str, l_idx + 1); -- ??????????????????????????????????????
          if instr(piv_str, p_sep) = 0 then -- ??????????????????????????????????????????????????????????????????????????
            SELECT NICK_NAME
              INTO nick_name_str
              from SYS_USER su
             where su.user_name = piv_str;
            res := concat(res, concat('/', nick_name_str)); --??????????????????
          end if;
        else
          exit;
        END IF;
      END LOOP;
    end;
  end if;
  RETURN res; --????????
END SPLIT_QUERY_NICKNAME;


###### 目前已知当前函数是传个code进去翻译成对应得汉字返回来
  • 写回答

3条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 1月26日
      • 已采纳回答 1月18日
      • 创建了问题 1月16日

      悬赏问题

      • ¥20 如何按照企业名字进行爬虫
      • ¥15 关于#单片机波形发生器频率计算#的问题,如何解决?
      • ¥100 制作短链接和api接口的
      • ¥15 星河亮点sp9500测试指导
      • ¥15 dataframe 某列数据分列
      • ¥15 风扇导入fluent后仿真压力和速度数据卡在旋转域
      • ¥15 echarts中dataZoom报错
      • ¥15 求解答:《前端综合基础》作为一门课程的话,应该包含哪些内容?
      • ¥15 软件原型系统开发+实例测试
      • ¥50 C#上位机调试Win USB