Невозможно объявить переменную в Oracle SQL (SQL Fiddle)

Когда я запускаю запрос объявления, он всегда выдает мне ошибки.

DECLARE
   the_variable date;
BEGIN
   SELECT MIN("Start Date") INTO the_variable FROM "Employee_Master";
END;

ORA-06550: строка 2, столбец 20: PLS-00103: обнаружен символ конца файла при ожидании одного из следующих: := . ( @ % ; ненулевой диапазон с символом по умолчанию.

Я не уверен, где проблема.


person Rachel Y    schedule 13.09.2020    source источник
comment
похоже, что SQLFiddle не поддерживает PL/SQL. Он не работает даже на простых begin null; end;   -  person Sayan Malakshinov    schedule 13.09.2020
comment
да, но это работает, если я добавлю / в следующей строке   -  person Sayan Malakshinov    schedule 13.09.2020
comment
и это работает, если я помещу весь блок pl/sql в один блок, то есть: declare dt date; begin dt:=date'2020-01-01'; end; с / в следующей строке   -  person Sayan Malakshinov    schedule 13.09.2020


Ответы (2)


У меня работает нормально:

SQL> create table "Employee_Master" ("Start Date" date);

Table created.

SQL> insert into "Employee_Master" values (sysdate);

1 row created.

SQL> declare
  2    the_variable date;
  3  begin
  4    select min("Start Date") into the_variable
  5      from "Employee_Master";
  6  end;
  7  /

PL/SQL procedure successfully completed.

SQL>

Хотя, почему, о, зачем ты делаешь свою жизнь невыносимой? Избегайте двойных кавычек при работе с Oracle. Если вы сделаете это, вам всегда придется ссылаться на таблицы (и столбцы), используя двойные кавычки и сопоставляя регистр букв точно, как в процессе создания.

По умолчанию Oracle хранит все в верхнем регистре, но вы можете ссылаться на эти объекты как хотите (верхний, нижний, смешанный регистр — не имеет значения). Но с двойными кавычками, как я уже сказал, требуется точное совпадение.


Кстати, скриншот, который вы приложили, показывает много ничего и лишь немного что-то. Не могли бы вы сделать скриншот получше?

person Littlefoot    schedule 13.09.2020
comment
Спасибо за ваш ответ. Извините за скрин, я его удалил. Имя столбца уже исправлено и содержит пробел, поэтому мне пришлось использовать двойные кавычки. Я использую оракул SQL Fiddle, но он всегда дает мне ошибку. sqlfiddle.com/#!4 - person Rachel Y; 13.09.2020

На веб-сайте SQL Fiddle вам нужно указать, что вы собираетесь использовать PL/SQL, и оператор будет заканчиваться знаком конца / (а не точкой с запятой ;). Для этого вам нужно нажать на кнопку Query Terminator (справа от кнопок Run SQL и Edit Fullscreen) и изменить его с [;] на [/].

Тогда это будет работать:

скрипт SQL

Настройка схемы Oracle 11g R2:

CREATE TABLE Employee_Master ( Start_Date DATE );
    
INSERT INTO Employee_Master ( Start_Date ) VALUES ( SYSDATE );

Запрос 1:

DECLARE
   the_variable date;
BEGIN
   SELECT MIN(Start_Date) INTO the_variable FROM Employee_Master;
END;
/

Результаты:

person MT0    schedule 13.09.2020