Очевидно, что вы не можете рассчитывать на то, чтобы поместить что-то до 300 символов в то, что принимает 100 символов, не так ли?
Но это не ваша проблема. ДатаЧетвёртый столбец - birthdate
, его тип данных - date
, но вы вставляете в него строку , потому что '1968-12-08'
- это строка. Вместо этого вы должны были использовать литерал даты, то есть date '1968-12-08'
.
О, да - вернемся к исходному вопросу (хотя и неправильному в этом контексте): лучший тип данных для длинного текста . Вы можете создать столбец с типом данных VARCHAR2(4000)
, и он с радостью примет ту «длинную» строку, которую вы использовали. Или вы можете даже выбрать CLOB
, который принимает до 4 гига символов;я полагаю, этого более чем достаточно.
Наконец, ваш запрос:
SQL> CREATE TABLE EMPLOYEES
2 (
3 EMPLOYEEID NUMBER(11) NOT NULL,
4 LASTNAME VARCHAR2(255 BYTE) DEFAULT NULL,
5 FIRSTNAME VARCHAR2(255 BYTE) DEFAULT NULL,
6 BIRTHDATE DATE DEFAULT NULL,
7 PHOTO VARCHAR2(255 BYTE) DEFAULT NULL,
8 NOTES VARCHAR2(100 BYTE) DEFAULT null
9 );
Table created.
Обратите внимание на литерал даты в строке № 4, а также функцию substr в строке № 5 (которая ограничивает длину строкидо 100).
SQL> INSERT INTO employees
2 (EmployeeID, LastName, FirstName, BirthDate, Photo, Notes)
3 VALUES
4 (1, 'Davolio', 'Nancy', date '1968-12-08', 'EmpID1.pic',
5 substr('Education includes a BA in psychology from Colorado State University. She also completed (The Art of the Cold Call). Nancy is a member
of Toastmasters International.', 1, 100))
6 ;
1 row created.
SQL>