Выполнить оператор без указания таблицы

0

select 2 + 2 - действительный оператор mysql, но в oracle я должен указать имя таблицы select 2 + 2 from foo (или dual таблицы). Есть ли способ не устанавливать оператор from? Интересно, почему он не является необязательным в Oracle. Предоставление поддельной таблицы звучит фиктивно, когда она может быть необязательной, как другие RDBM.

  • 1
    Я так не думаю, но если вам неудобно называть имя созданной вами таблицы, вы можете упомянуть двойной, то есть выбрать 2 + 2 из двойного;
  • 0
    выбор из двойного также вариант в MySQL
Теги:

4 ответа

3

Вы должны выбрать что-то; в Oracle это таблица DUAL:

SQL> select 3 + 6 from dual;

       3+6
----------
         9

Это принадлежащая SYS таблица и содержит одну строку:

SQL> select * From dual;

DUMMY
--------------------
X

Поэтому это полезно для таких вещей (где вам нужно взять одну строку).

То, как вы его помещаете (select... from foo), выглядит нормально, если foo также содержит одну строку. Но что, если это не так? Посмотрите: Есть 4 отделов в dept таблице:

SQL> select 3 + 6 from dept;

       3+6
----------
         9
         9
         9
         9

Так что - используйте DUAL :)

0

используйте double, потому что это однострочная таблица с одиночной строкой с типом данных VARCHAR2 (1) в нем. Обычно используйте double, когда вы хотите извлечь один output.it имеет фиктивное значение X. AS wiki говорит: - Идея заключалась в том, что вы можете сделать JOIN в таблице DUAL и создать две строки в результатах для каждой строки в таблице. Затем, используя GROUP BY, итоговое объединение можно суммировать, чтобы показать объем хранения для объема DATA и для объема (ов) INDEX. Имя, DUAL, казалось подходящим для процесса создания пары строк из одного. [1]

Первоначальная таблица DUAL имела в ней две строки (отсюда и название), но впоследствии она имела только одну строку.

0

Это не связано с SQL в целом, но с SQL * Plus или другими идами, запущенными как скрипт (F5), вы можете сделать арифметику без указания таблицы

VARIABLE b NUMBER
EXEC :b := 2+2;
PRINT b;


PL/SQL procedure successfully completed.

         B
----------
         4
0

Используя подпрограммы PL/SQL в Oracle, вы можете выполнить 2 + 2, например

DECLARE
    v_sum number;
BEGIN
    v_sum:= 2 + 2;
END;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню