programing

하나의 문에서 시퀀스에서 여러 NEXTVAL 쿼리

yellowcard 2023. 6. 29. 19:57
반응형

하나의 문에서 시퀀스에서 여러 NEXTVAL 쿼리

기본적으로, 저는 시퀀스에서 천 개의 NEXTVAL에 대해 문의해야 합니다.루프에서 쿼리할 수도 있고, 매우 큰 테이블을 가진 조인을 통해 쿼리할 수도 있습니다.

이보다 덜 촌스러운 방법은 없습니까?

업데이트. 기본적으로, 저는 물체에 대한 작업 일정이 있습니다.각 개체에는 생성된 UUID 또는 데이터베이스의 ID가 있습니다.최적의 일정을 계산한 후 DB에 작성해야 하지만 표의 모든 ID는 시퀀스에서 작성해야 합니다.그래서 저는 그 순서에서 몇 가지 ID를 조회해야 합니다.문제는 루프 쿼리가 느리다는 것입니다. DB가 저와 거리가 멀기 때문입니다. 또한 루프에서 수십 개의 쿼리를 실행하는 동안 몇 초만 느슨하게 할 수는 없습니다.그래서 저는 한 번의 쿼리로 모든 새로운 ID를 쿼리해야 합니다.

다음을 사용할 수 있습니다.

select your_sequence.nextval
from (
   select level 
   from dual 
   connect by level < 1000
);

당신이 그들과 무엇을 하고 싶은지에 달려있습니다.

테이블에 삽입하는 경우 삽입 쿼리에서 seq.nexval을 해제할 수 있습니다. (여기서 설명하는 바와 같이)시퀀스 값을 사용하여 오라클에 여러 행을 삽입하려면 어떻게 해야 합니까?

루프에서 사용하면 해당 루프에서 가져올 수 있습니다.

당신은 그들과 무엇을 하고 싶습니까?

시퀀스에서 여러 값을 가져올 수 없는 것으로 알고 있습니다.

업데이트: a_horse_with_no_name의 답변은 다음과 같이 개선할 수 있습니다.

select your_sequence.nextval
from dual 
connect by level < 1000

:)

내 (H2) 장치 테스트 데이터베이스가 "연결 기준"을 지원하지 않아서 다른 방법을 생각해 내야 했습니다.

    with temp_id_table (lvl) as 
       (select 1 as lvl from dual 
        union all 
        select lvl+1 
          from temp_id_table 
          where lvl < 1000) 
    select sequence_name.nextval 
    from temp_id_table;
select sequence_name.nextval
from dual
connect by level < number of values you want to print;

언급URL : https://stackoverflow.com/questions/8292199/query-several-nextval-from-sequence-in-one-statement

반응형