你的問題就沒有意義了。對於varchar,NEXTVAL會是什麼?
如果你想在varchar列中存儲一個數字,你可以但不應該。最好在數字列中保存數字。
如果你想要的是產生一個A, B, C ... Z, AA, AB ... AZ, AAA
流然後你可以寫一個函數,它需要一個規則的序列,並將其轉換爲基地26(或基地36,如果你想去1,2 ...9, A, B ... Z, 10, 11 ... 1A
)。但對於沒有明確收益的東西來說,這是一項很大的努力。
如果你想要一個更復雜的系列,如2009/00000001, 2009/00000002
等,可以通過使用所謂的代碼控制表來完成。這是一個手工製作的表格,保存最後分配的值。再次,您需要一些定製的代碼來生成下一個值。這種方法存在一些嚴重的侷限性,其中最重要的是它會對您的插入進行序列化:您的代碼必須對該表發出鎖定,因此第二個用戶無法將記錄插入到CUSTOMER中,直到第一個用戶發出提交或回滾)。
編輯
我不明白你爲什麼說DBMS_RANDOM不起作用。顯然不行:
SQL> select dbms_random.string('U', 5)
2 from dual
3/
DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------
IROGT
SQL>
來源
2009-08-24 03:07:10
APC
我只是不知道如何字呢。我不是說nextval,而是nextval的varchar版本。因爲我嘗試使用dbms_random.string('U',5);但它不起作用。 – taksIV 2009-08-24 03:27:25