【发布时间】:2012-11-07 16:49:56
【问题描述】:
我正在构建一个 SQL Server 作业,以通过链接服务器将数据从 SQL Server 提取到 Oracle 数据库中。我需要填充的表具有名称 ID 的序列,这是我的主键。我很难找到一种简单的方法来做到这一点,而无需一些冗长的代码。到目前为止,这是我对 SELECT 部分的了解(一些实际名称被混淆了):
SELECT (SELECT NEXTVAL FROM OPENQUERY(MYSERVER,
'SELECT ORCL.NAME_SEQNO.NEXTVAL FROM DUAL')),
psn.BirthDate, psn.FirstName,
psn.MiddleName, psn.LastName, c.REGION_CODE
FROM Person psn
LEFT JOIN MYSERVER..ORCL.COUNTRY c ON c.COUNTRY_CODE = psn.Country
MYSERVER 是链接的 Oracle 服务器,ORCL 显然是模式。 Person 是执行查询的 SQL Server 数据库上的本地表。
当我运行此查询时,我会为 NEXTVAL 的所有记录获得相同的准确值。我需要的是它为每个返回的记录生成一个新值。
我发现了这个类似的问题及其答案,但不确定如何将其应用于我的案例(如果可能的话):Query several NEXTVAL from sequence in one statement
【问题讨论】:
-
select查询如何将数据传输到 Oracle 数据库中? -
我认为 OP 的意思是
from而不是into。 -
它只是做一个简单的插入。我没有包含那部分代码,因为我觉得这个问题没有必要。
-
我不相信我在问题的任何地方都说过
into。编辑:我知道你在哪里感到困惑。是的,它最终会插入到 Oracle 表中,但我只发布了select部分,因为这是我现在需要知道的。insert无关紧要。 -
我无意对那个评论无礼;如果那是它所采取的,我深表歉意。我已经找到了一种方法,方法是使用 Oracle 端的表并从中选择序列值,但不幸的是,这不是一个选项,因为我从中选择的表位于 SQL Server 上,而我必须
OPENQUERYOracle 数据库获取序列号。
标签: sql sql-server oracle oracle10g linked-server