001
001001
001001001
001001002
001002
002
002001
uj5u.com熱心網友回復:
這是樹狀編碼吧獲取父節點的編碼,然后在拼當前節點的編碼就好了,不太明白你的意思。
select to_char(1, 'fm000') from dual; 這個陳述句生成的結果就是001,自己看看怎么弄吧
uj5u.com熱心網友回復:
就是想在執行插入操作時,自動生成是這種樹狀編碼形式的組織編號uj5u.com熱心網友回復:
不可能自動的,只能通過代碼來實作uj5u.com熱心網友回復:
那這個怎么寫存盤程序???求指教uj5u.com熱心網友回復:
這么簡單的東西沒必要寫存盤程序表設計好了嗎?具體怎么寫要看表結構的
uj5u.com熱心網友回復:
select sys_connect_by_path(id, '00')from (select level id from dual connect by level < 3) t1
connect by level < 4;
uj5u.com熱心網友回復:
就是不知道怎么拼接子節點編號,父節點編號我能獲取uj5u.com熱心網友回復:
拼接字串用||uj5u.com熱心網友回復:
我現在就是不知道怎么拼接。。。。uj5u.com熱心網友回復:
select parent_id || child_id from dual;或者
直接用變數
V_ID := parent_id || child_id;
uj5u.com熱心網友回復:
試過,不過0沒有補齊,想插入 001 001001 001002 001002這種,還是過取最大子節點編號再加1,也是中間的0丟了001003變成1003uj5u.com熱心網友回復:
如果表里面定義的節點欄位是字符型的,是不會丟0你想的是怎么獲取下個節點編號吧?
可以考慮抓取當前父節點下的最大子節點編碼,轉換成整型+1后再轉換成字符型
你可以把表結構貼一下,這樣可以回答得更清晰
uj5u.com熱心網友回復:
create table organization(
id INTEGER not null,
org_code VARCHAR2(32) default NULL,
org_name VARCHAR2(128) default NULL,
org_no VARCHAR2(32) default NULL,
parent_id INTEGER default NULL,
constraint PK_ORGANIZATION primary key (id)
);

這是表結構,轉成整形再轉字符型好像也是0丟了
uj5u.com熱心網友回復:
你怎么轉換的?把代碼貼一下uj5u.com熱心網友回復:
select max(org_no)+1 orgNo from uap_organization p where p.parent_id = '1'查詢結果1003
uj5u.com熱心網友回復:
select to_char(max(org_no)+1, 'fm000000') orgNo from uap_organization p where p.parent_id = '1'uj5u.com熱心網友回復:
這個寫法更好,可以不用管在哪個層級select to_char(max(org_no)+1, rpad('fm', length(org_no), '0')) orgNo from uap_organization p where p.parent_id = '1'
uj5u.com熱心網友回復:
select to_char(max(org_no)+1, rpad('fm', length(org_no), '0')) orgNo from uap_organization p where p.parent_id = '1' group by org_no結果:1002 1003 前面的0丟失了
uj5u.com熱心網友回復:
你這個分組標識都沒得嗎。。uj5u.com熱心網友回復:
select to_char(max(org_no)+1, rpad('fm', length(org_no) + 2, '0')) orgNo from uap_organization p where p.parent_id = '1'uj5u.com熱心網友回復:
insert into organization
select top 1 (select max(id)+1 from organization)
,(select isnull(max(org_no),'') from organization where id=@pid)+right('000'+convert(varchar,max(
convert(int,
right(org_no,
len(org_no)-len(select max(org_no) from organization where id=@pid)
)
)
)+1
),
len(select max(org_no) from organization where id=@pid)+3
)
,@orgname
,@pid
from organization
where parent_id=@pid
uj5u.com熱心網友回復:
直接定義為字串吧!uj5u.com熱心網友回復:
拼接字串用||uj5u.com熱心網友回復:
直接定義為字串,然后在JS里面拼接起來,一般來說專案里面是會限定編號長度的,所以還要加一個字串長度判斷和截取轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63563.html
標籤:開發
上一篇:Oracle資料遠程匯出、匯入
下一篇:請教大神如何優化這段SQL,謝謝
