Получение первых 100 записей из таблицы в текущей базе данных OpenEdge (например, ВЫБЕРИТЕ TOP 100 ..)

#progress-4gl #openedge

#прогресс-4gl #openedge

Вопрос:

Как я могу получить ограниченное количество записей из таблицы в текущей базе данных OpenEdge?

Что-то вроде в SQL:

 SELECT TOP 100 * FROM MyTable
  

Единственное уродливое решение, которое я могу найти, — это перебирать все записи и прерывать, когда отображалось 100 из них. Но, похоже, должен быть какой-то лучший способ сделать это.

Ответ №1:

Если вы используете 4GL, вы также можете захотеть посмотреть на использование OPEN QUERY и MAX-ROWS для достижения результата, который вы ищете. Ниже показан традиционный ДЛЯ КАЖДОГО цикла счетчик, а затем ЗАПРОС с МАКСИМАЛЬНЫМ количеством СТРОК:

 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.
  

Ответ №2:

Если вы используете движок SQL-92, то что-то вроде:

ВЫБЕРИТЕ TOP 100 ИЗ pub.customer;

должно работать просто отлично.

Если вы используете движок 4GL, вам не следует пытаться смешивать SQL с 4GL. Это приведет только к боли, страданиям и агонии. 4GL — это не SQL. Есть несколько инструкций SQL-89, которые были введены в 4GL давным-давно по маркетинговым соображениям. Попытка их использования приведет к серьезной эмоциональной травме. Вы были предупреждены.

Комментарии:

1. К сожалению, я могу дать вам только 1 голос. Ваши слова точно описывают опыт, который я получил!

Ответ №3:

Пожалуйста, перейдите по ссылке, чтобы загрузить файл. Надеясь, что на этот вопрос ответит база данных OpenEdge

Ответ №4:

ОПРЕДЕЛИТЕ ПЕРЕМЕННУЮ i КАК ЦЕЛОЕ ЧИСЛО БЕЗ ОТМЕНЫ.

ДЛЯ КАЖДОГО клиента БЕЗ БЛОКИРОВКИ шириной 320:

 ASSIGN i = i   1.
  

если i <= 100, то
DISP CustNum Адрес Баланс Город Контакт
Скидка на кредитный лимит страны
Назовите условия состояния отправки по телефону PostalCode.

ЗАВЕРШЕНИЕ.

Комментарии:

1. Не очень хорошее решение. Если у вас миллион записей о клиентах, они будут продолжать просмотр остальных 999 900 после отображения первых 100.