2011-10-07 3 views
4

Progress OpenEdge 데이터베이스의 테이블에서 제한된 수의 레코드를 얻으려면 어떻게해야합니까? SQL처럼Progress OpenEdge 데이터베이스 (예 : SELECT TOP 100 ..)의 테이블에서 처음 100 개의 레코드 얻기

뭔가 :

SELECT TOP 100 * FROM MyTable 

나는 모든 레코드를 반복하고 100가 표시 될 때 파괴되어 찾을 수있는 유일한 추한 솔루션입니다. 그러나 그것을하는 더 좋은 방법이 있어야하는 것처럼 느껴집니다.

답변

6

4GL을 사용하는 경우 OPEN QUERY 및 MAX-ROWS를 사용하여 원하는 결과를 얻을 수 있습니다. 다음은 대향하고 MAX-ROWS와 QUERY 각 루프에 대한 전통적인 보여준다

define variable i as integer no-undo. 
define frame a with 10 down. 

for each customer no-lock break by name: 
    i = i + 1. 
    display i custNum name discount. 
    if i >= 5 then leave. 
end. 

define query q for customer scrolling. 

open query q for each customer no-lock break by name max-rows 5. 

do i = 1 to 5 with frame a: 
    get next q. 
    display i custNum name discount. 
end. 
0

파일을 다운로드하려면 링크를 클릭하십시오. 문제는 거기에 응답 할 것을 기대 OpenEdge Database

6

당신은 SQL-92 엔진을 사용하는 경우 다음 뭔가 같은 : pub.customer FROM

SELECT TOP 100;

은 정상적으로 작동합니다.

4GL 엔진을 사용하는 경우 SQL을 4GL과 혼합해서는 안됩니다. 고통, 불행 및 고뇌로 이어질 것입니다. 4GL은 SQL이 아닙니다. 마케팅 목적으로 오랫동안 오래전에 4GL에 들어 있던 SQL-89 문이 몇 가지 있습니다. 그들을 사용하려고하면 심한 정신적 외상을 입을 것입니다. 당신은 경고를 받았습니다.

+0

슬프게도 나는 단지 1 upvote 줄 수 있습니다. 당신의 말은 내가 아빠와 정확히 같은 경험을 묘사합니다! – profimedica

-1

가 NO-INTEGER UNDO 가변적에게 전을 정의한다. 폭 (320)와 각 고객 NO-LOCK에 대한

:

ASSIGN i = i + 1. 

경우 I = 100 < 다음 DISP CustNum이 균형 시티 연락 나라 CreditLimit 할인
성 전화을 PostalCode하여 SalesRep 주 약관 주소.

끝.

+2

좋은 해결책이 아닙니다. 백만 개의 고객 레코드가있는 경우 첫 번째 100을 표시 한 후에 다른 999,900을 계속 진행합니다. – TheDrooper

관련 문제