'ПРОДОЛЖИТЕ' ключевое слово в Oracle МН 10 г / SQL

В Scala вы можете использовать implicits для добавления методов isEmpty() и nonEmpty() в API DataFrame, что сделает код более приятным для чтения.

object DataFrameExtensions {
  implicit def extendedDataFrame(dataFrame: DataFrame): ExtendedDataFrame = 
    new ExtendedDataFrame(dataFrame: DataFrame)

  class ExtendedDataFrame(dataFrame: DataFrame) {
    def isEmpty(): Boolean = {
      Try{dataFrame.first.length != 0} match {
        case Success(_) => false
        case Failure(_) => true 
      }
    }

    def nonEmpty(): Boolean = !isEmpty
  }
}

Здесь другие методы также могут быть добавлены. Чтобы использовать неявное преобразование, используйте import DataFrameExtensions._ в файле, который вы хотите использовать расширенную функциональность. Впоследствии методы могут использоваться непосредственно так:

val df: DataFrame = ...
if (df.isEmpty) {
  // Do something
}
36
задан Christopher McAtackney 7 October 2008 в 20:28
поделиться

6 ответов

Вы можете моделировать продолжать использование goto и маркируете .

DECLARE
   done  BOOLEAN;
BEGIN
   FOR i IN 1..50 LOOP
      IF done THEN
         GOTO end_loop;
      END IF;
   <<end_loop>>  -- not allowed unless an executable statement follows
   NULL; -- add NULL statement to avoid error
   END LOOP;  -- raises an error without the previous NULL
END;
56
ответ дан jop 8 August 2019 в 15:55
поделиться

Хотя это немного сложно и просто фальшивка, можно использовать исключение этот путь:

DECLARE
  i NUMBER :=0;
  my_ex exception;
BEGIN
  FOR i IN 1..10
  LOOP
      BEGIN
         IF i = 5 THEN
            raise my_ex;
         END IF;
         DBMS_OUTPUT.PUT_LINE (i);
      EXCEPTION WHEN my_ex THEN
         NULL;
      END;
  END LOOP;

END;
10
ответ дан 8 August 2019 в 15:55
поделиться

Это не доступно в 10 г, однако это новая возможность в 11G

5
ответ дан Dilshod Tadjibaev 8 August 2019 в 15:55
поделиться

Можно ли осуществить рефакторинг IFS в функцию, возвращающуюся в соответствующей точке (рано при необходимости). Тогда поток управления возьмет в цикле в правильном месте.

, который имеет смысл?

4
ответ дан cagcowboy 8 August 2019 в 15:55
поделиться

В Oracle существует подобный оператор под названием ВЫХОД, который или выходит из цикла или функции/процедуры (если нет никакого цикла для выхода от). Можно добавить, КОГДА проверить на некоторое условие.

Вы могли переписать вышеупомянутый пример следующим образом:

DECLARE
   done  BOOLEAN;
BEGIN
    FOR i IN 1..50 LOOP
     EXIT WHEN done;
   END LOOP;
END;

Это не может быть достаточно, если Вы хотите выйти от в глубине души некоторых вложенных циклов и логики, но намного более ясно, чем несколько GOTOs и АННУЛИРУЕТ.

1
ответ дан Thorsten 8 August 2019 в 15:55
поделиться

Не совсем элегантно, но просто:

DECLARE
   done  BOOLEAN;
BEGIN
   FOR i IN 1..50 LOOP
      IF done THEN
         NULL;
      ELSE
         <do loop stuff>;
      END IF;
   END LOOP; 
END;
2
ответ дан 27 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: