продолжайте получать недопустимый идентификатор и неправильный тип данных в apex

#sql #oracle #oracle-apex

#sql #Oracle #oracle-apex

Вопрос:

 create table Schedule (
lms_code   varchar (100),
bcode      varchar (100),
start_date varchar (100),
end_date   varchar (100),
timings    time
);
  

Ответ №1:

На мой взгляд, вы бы

  • используйте VARCHAR2 тип данных (не VARCHAR ). Почему? Oracle говорит

    Тип данных VARCHAR является синонимом типа данных VARCHAR2. Чтобы избежать возможных изменений в поведении, всегда используйте тип данных VARCHAR2 для хранения символьных строк переменной длины.

  • start_date и end_date должно быть DATE , нет VARCHAR2 . Всегда сохраняйте даты в DATE столбце типа данных, никогда не сохраняйте их в виде строк VARCHAR2 . Почему? Сегодня 6 ноября 2020 года, и вы бы сохранили его в DATE столбце типа данных, например, как литерал даты : date '2020-11-06' . Если бы это был VARCHAR2 столбец, вы могли бы поместить 06.11.2020 в него, или 1f.scx3.f4 , или Littlefoot … все это строки, и у вас возникнут проблемы, если вы будете настаивать на сохранении дат в виде строк.

  • что касается timings столбца, вопрос в следующем: что вы будете там хранить? В Oracle нет time типа данных, поэтому вы бы использовали date (если вас устраивает время до секунд), timestamp (если вам нужны доли секунды) или … Я не знаю, что-то еще — опять же, в зависимости от того, что вы будете хранить в этом столбце

Итак: чтобы заставить его работать, вы могли бы

 SQL> create table Schedule (
  2    lms_code   varchar2 (100),
  3    bcode      varchar2 (100),
  4    start_date date,
  5    end_date   date,
  6    timings    date
  7  );

Table created.

SQL>
  

Ответ №2:

вы используете неправильный тип данных, у нас нет типа данных time, вы можете использовать TIMESTAMP :

 CREATE TABLE Schedule
    (
        lms_code     VARCHAR(100)
        , bcode      VARCHAR(100)
        , start_date VARCHAR(100)
        , end_date   VARCHAR(100)
        , timings    TIMESTAMP
    );