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

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条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2023-01-16 17:04
    关注

    数据库中显示乱码么?可能是显示问题,设置下编码格式或者环境变量为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK试试看,如果原本就是乱码,那就可能是不可逆的,翻译不了,只能通过分析数据,查看方法,看你的中文是什么内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站