2025年4月24日

分类下拉的时候没有数据

H1导入H2数据 分类下拉没数据,下拉语句跟踪报错

select classcode, classname, classgroupno
  from (SELECT distinct k.classcode,
               (select listagg(a.classname, '-') within group(order by a.levels) classname
                  from t_class_base a
                 where a.levels <> 0
                 start with a.classgroupno = k.classgroupno
                        and a.classcode = k.classcode
                connect by PRIOR a.parentno = a.classcode) as classname,
               k.classgroupno
          FROM t_class_base k
         WHERE k.levels <> 0
           AND parentno IS NOT NULL
           AND connect_by_isleaf = 1
        connect by prior classcode = parentno 
           AND EXISTS (SELECT 1
                  FROM t_class t
                 WHERE t.classcode = k.classgroupno
                   and t.compid = 1
                   and t.status = 1)
        UNION ALL
        SELECT NULL, NULL, classgroupno
          FROM t_class_base
         WHERE levels = 0)

报错:

ORA-01436: 用户数据中的 CONNECT BY 循环

查询出错的数据(1.子目录没有匹配到父目录的情况)

select* from t_class_base  where PARENTNO not in (select classcode from t_class_base)

查出来之后进行简单修补

INSERT INTO t_class_base (classcode, classname, levels, classgroupno, lastmodify, lasttime, notes, stamp, parentno, isglobalclass, classabc, status)
SELECT PARENTNO, classname, levels-1, classgroupno, 168, SYSDATE, '补充无上级编码', 0, 
       SUBSTR(PARENTNO, 0, LENGTHB(PARENTNO)-2), 0, f_st2zjm(classname), 1
FROM (
    SELECT t.*, 
           ROW_NUMBER() OVER (PARTITION BY PARENTNO ORDER BY ROWID) AS rn
    FROM t_class_base t
    WHERE PARENTNO NOT IN (SELECT classcode FROM t_class_base)
    AND PARENTNO <> '*'
)
WHERE rn = 1

查询出错的数据(2.子目录和父目录一样的情况)

SELECT classcode, parentno, CONNECT_BY_ISCYCLE as is_cycle
  FROM t_class_base
 WHERE CONNECT_BY_ISCYCLE = 1
CONNECT BY NOCYCLE PRIOR classcode = parentno
 START WITH parentno IS NOT NULL;

查出来之后进行数据修正

update t_class_base set parentno = '' where classcode = ''

数据库里面有数据但是商品信息里面查不到

因为Oracle有些字符是看不到的!!!

BEGIN
    FOR i IN (SELECT compid, wareid, warename,waregeneralname,warespec,waremark    FROM t_ware) LOOP
        FOR x IN 1 .. 31 LOOP
            --1~31之间的不可见字符全部替换为空白
            i.warename     := TRIM(REPLACE(i.warename, chr(x), ''));
            i.waregeneralname := TRIM(REPLACE(i.waregeneralname, chr(x), ''));
        END LOOP;
        UPDATE t_ware
        SET    warename = to_single_byte(i.warename), waregeneralname = to_single_byte(i.waregeneralname)
        WHERE  compid = i.compid AND wareid = i.wareid;
        COMMIT;
    END LOOP;
END;

上面的脚本可以扩展使用到 t_ware_ext ,t_comp_ware,t_vencus,等,只要界面不显示数据,但是数据库有,大部分会是特殊字符的原因

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇