我试图为现有表中的每一行生成一个 uuid,并为两个不同的列设置相同的值。
我写了一个更新语句,我认为应该这样做,但它为每个列设置了不同的uuid。为什么?
CREATE TABLE tbl (
n number,
r1 raw(32),
r2 raw(32)
);
insert into tbl (n) values (1);
insert into tbl (n) values (2);
insert into tbl (n) values (3);
update (select r1, r2, sys_guid() as uuid FROM tbl)
set r1 = uuid, r2 = uuid;
select n, rawtohex(r1), rawtohex(r2) from tbl;
Run Code Online (Sandbox Code Playgroud)
| 氮 | RAWTHEX(R1) | RAWTHEX(R2) |
|---|---|---|
| 1 | F89B6F66D7C7A52FE050020A02583951 | F89B6F66D7C8A52FE050020A02583951 |
| 2 | F89B6F66D7C9A52FE050020A02583951 | F89B6F66D7CAA52FE050020A02583951 |
| 3 | F89B6F66D7CBA52FE050020A02583951 | F89B6F66D7CCA52FE050020A02583951 |
我使用的是英特尔®VisualFortran编译器专业版11.1,当我运行此代码时
program Console1
implicit none
real(8), parameter:: iterations = 1000.d0
real(8), parameter:: maximum = 0.02d0
integer, parameter:: outfile=1
real(8) force, dforce
integer i
dforce = maximum/iterations
force = 0.d0
open (unit=outfile,file="results.txt",action="write",status="replace")
do i=0,int(iterations)
write(outfile, *) force
force = force+dforce
enddo
close(outfile)
endprogram
Run Code Online (Sandbox Code Playgroud)
文件results.txt是乱七八糟的,最终的数字是1.999999999999952E-002而不是2.d-2
我做错了什么?谢谢!