首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为多行选择序列NEXTVAL

为多行选择序列NEXTVAL
EN

Stack Overflow用户
提问于 2012-11-19 17:50:07
回答 3查看 4.2K关注 0票数 1

我正在构建一个server作业,以便通过链接服务器将数据从Server中提取到Oracle数据库中。我需要填充的表有一个名称ID的序列,这是我的主键。我很难想出一种简单的方法,不需要一些冗长的代码。以下是我到目前为止对SELECT部分的了解(一些实际名称被混淆):

代码语言:javascript
复制
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是正在执行查询的Server数据库中的本地表。

在运行此查询时,为NEXTVAL的所有记录获得相同的确切值。我需要的是为每个返回的记录生成一个新的值。

我发现了这个类似的问题,并给出了答案,但我不知道如何将它应用到我的案例中(如果可能的话):Query several NEXTVAL from sequence in one statement

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-21 15:42:14

最后,我不得不遍历所有记录并分别设置ID值。混乱和缓慢,但这似乎是唯一的选择在这种情况下。

票数 0
EN

Stack Overflow用户

发布于 2013-05-15 18:54:39

将其放入SQL标量函数中。示例:

代码语言:javascript
复制
CREATE function [dbo].SEQ_PERSON() 
returns bigint as
begin
    return
    (   select NEXTVAL 
        from openquery(oraLinkedServer, 'select SEQ_PERSON.NEXTVAL FROM DUAL')
    )
end
票数 3
EN

Stack Overflow用户

发布于 2018-01-14 15:56:09

非常简单,只需使用游标来迭代代码:

代码语言:javascript
复制
SELECT NEXTVAL AS SQ from OPENQUERY(MYSERVER, 'SELECT  AC2012.NAME_SEQNO.NEXTVAL FROM DUAL')

,因此您可以将此select语句嵌入到任何Sql语句中,并通过游标.进行迭代。

PS:

代码语言:javascript
复制
DECLARE SQCURS CURSOR  
FOR SELECT (SELECT NEXTVAL AS SQ FROM OPENQUERY(MYSERVER, 
'SELECT ORCL.NAME_SEQNO.NEXTVAL FROM DUAL')), 
 psn.BirthDate, psn.FirstName, psn.MiddleName, psn.LastName, c.REGION_CODE

从Person psn左转加入MYSERVER..ORCL.COUNTRY c ON c.COUNTRY_CODE = psn.Country

打开SQCURS,然后从SQCURS获取;

我希望你能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13459331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档