我目前正在将一个产品从SQL Server迁移到Oracle。我对SQL Server有一定了解,但对Oracle一无所知,如果这个问题的存在冒犯了任何人,我深表歉意。
从这个页面http://download.oracle.com/docs/cd/E12151_01/doc.150/e12156/ss_oracle_compared.htm可以推断出,从SQL Server到Oracle的数据类型转换应该是:
REAL = FLOAT(24) -> FLOAT(63)
FLOAT(p) -> FLOAT(p)
TIMESTAMP -> NUMBER
NVARCHAR(n) -> VARCHAR(n*2)
NCHAR(n) -> CHAR(n*2)
以下是关于它们的问题:
对于FLOAT,考虑到FLOAT(p) -> FLOAT(p),那么它是否也意味着FLOAT -> FLOAT(24)?
对于TIMESTAMP,由于Oracle也有自己的版本,那么TIMESTAMP -> TIMESTAMP是否更好?
最后,对于NVARCHAR(n)和NCHAR(n),我认为问题应该涉及Unicode。然而,既然Oracle提供了它们自己的版本,那么NVARCHAR(n) -> NVARCHAR(n)和NCHAR(n) -> NCHAR(n)是否更合理?
如果有人能详细解释上述3个问题,将不胜感激。
提前致谢。
从这个页面http://download.oracle.com/docs/cd/E12151_01/doc.150/e12156/ss_oracle_compared.htm可以推断出,从SQL Server到Oracle的数据类型转换应该是:
REAL = FLOAT(24) -> FLOAT(63)
FLOAT(p) -> FLOAT(p)
TIMESTAMP -> NUMBER
NVARCHAR(n) -> VARCHAR(n*2)
NCHAR(n) -> CHAR(n*2)
以下是关于它们的问题:
对于FLOAT,考虑到FLOAT(p) -> FLOAT(p),那么它是否也意味着FLOAT -> FLOAT(24)?
对于TIMESTAMP,由于Oracle也有自己的版本,那么TIMESTAMP -> TIMESTAMP是否更好?
最后,对于NVARCHAR(n)和NCHAR(n),我认为问题应该涉及Unicode。然而,既然Oracle提供了它们自己的版本,那么NVARCHAR(n) -> NVARCHAR(n)和NCHAR(n) -> NCHAR(n)是否更合理?
如果有人能详细解释上述3个问题,将不胜感激。
提前致谢。
UPDATE... WHERE PK=@PK AND TimestampCol=@PreviousTimestamp
。如果没有受影响的行,则表示自从您加载数据以来已被其他人更改。此外,SQL Server 中正在删除时间戳,因为名称令人困惑,它将被 rowversion (Transact-SQL) 替换。 - KM.