Oracle sql中varchar的nextval序列?

Oracle sql中varchar的nextval序列?,oracle,sequence,varchar,nextval,Oracle,Sequence,Varchar,Nextval,我想知道是否有一种方法可以为varchar值生成nextval序列? 我使用的是iSQL plus,oracle。 例如,我有一个销售表,其中包括sale\u id,prod\u id,cust\u name,sale\u name。 其中,我通过执行以下操作插入数据: insert into sales select sale_id_seq.nextval, trunc(dbms_random.value(1,100)), (code for assigning random string f

我想知道是否有一种方法可以为
varchar
值生成
nextval
序列? 我使用的是iSQL plus,oracle。 例如,我有一个销售表,其中包括
sale\u id
prod\u id
cust\u name
sale\u name
。 其中,我通过执行以下操作插入数据:

insert into sales
select sale_id_seq.nextval,
trunc(dbms_random.value(1,100)),
(code for assigning random string for sale_name)
cust_id
from customer;

你的问题没有道理。varchar的下一个目标是什么

如果您想在varchar列中存储一个数字,您可以,但不应该。最好将数字保存在数字列中

如果你想要的是生成一个
a,B,C。。。Z、 AA,AB。。。AZ,AAA
然后您可以编写一个函数,它接受一个规则序列并将其转换为基数26(或者如果您想转换为基数36,则为
1,2…9,a,B…Z,10,11…1A
)。但这是一个很大的努力,没有明显的好处

如果您想要一个更复杂的系列,如
2009/00000001、2009/00000002
,可以使用所谓的代码控制表来完成。这是一个手工制作的表,其中保存最后一个指定的值。同样,您需要一些定制代码来生成下一个值。这种方法有一些严重的限制,尤其是它序列化了插入:代码必须对表发出锁,因此在第一个用户发出提交(或回滚)之前,第二个用户无法将记录插入客户

编辑

我不明白你为什么说DBMS_RANDOM不工作。它显然是:

SQL> select dbms_random.string('U', 5)
  2  from dual
  3  /

DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------

IROGT

SQL>

如果您需要生成测试数据的工具,请看一下

我只是不知道如何使用它。我不是说nextval,而是nextval的varchar版本。因为我尝试使用dbms_random.string('U',5);但它不起作用。