急急!!!请问:怎么在delphi里用oracle 的sequence??(100分)

  • 主题发起人 主题发起人 rickpasu
  • 开始时间 开始时间
R

rickpasu

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我想往数据库里加入一条数据:aa为创建的序列名称
insert hk values( :clsh,*,*,*);
clsh流水号 是包含 4位年+2位月+2位日+aa.nextval 这应该怎么写呢???
要是我插入了这条纪录,我怎么知道这条纪录的流水号是多少(同时,也有别的人在插入
纪录)??

帮帮忙,各位大仙!!!
 
插入之前先生成流水号,存放到一个变量中,插入记录时将变量值赋给流水号字段值即可。
插入后可以继续用这个变量中存放的流水号进行进一步的操作——这也许是Oracle不用自增
字段的原因!
只要用了Sequence,就不会有重复的流水号(Sequence不能循环取值)。
 
如果想在客户端获得nextval,可以通过select aa.nextval from dual来实现
但不提倡这样做

好办法是
写一个insert触发器

trigger:
...
:new.id=aa.nextval;
...
 
desertsmoke: 可不可以用代码表示出来呢,我会更明白。
因为我不知道代码怎么写???
 
here is the sql script
insert into my_tab (id, name)
values (tab_seq.nextval, 'yh')
returing :ret_val

in delphi, use variable binding to get this return value
 
不好意思,我还是不明白。
var str: string;
begin
str:= 4位年+2位月+2位日;
with query1 do
...
sql.add('insert hk values( :clsh,*,*,*)');
parambyname(clsh).asinteger:= 怎么写?
execsql;
end;
 
var
SID:string;
begin
select sysdate 系统日期,aa.nextval 流水号 from dual; //返回系统的日期和序列的下一个值
sid := formatdatetime('YYYYMMDD',系统日期)+流水号;
insert into tablename(...) values(sid,...)
end;
 
谢谢你,desertsmoke!我知道啦![:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部