Оператор MS Access INSERT INTO

Это стоящий указания, что встроенное ключевое слово является на самом деле просто подсказкой к компилятору. Компилятор может проигнорировать встроенное и просто генерировать код для функции где-нибудь.

основной недостаток к подставляемым функциям состоит в том, что это может увеличивать размер Вашего исполняемого файла (в зависимости от количества инстанцирований). Это может быть проблемой на некоторых платформах (например, встроенные системы), особенно если сама функция является рекурсивной.

я также рекомендовал бы делать функции inline'd очень небольшими - преимущества скорости подставляемых функций имеют тенденцию уменьшаться, поскольку функция увеличивается в размере. В какой-то момент издержки вызова функции становятся маленькими по сравнению с выполнением тела функции, и преимущество потеряно.

5
задан Tony 28 May 2014 в 10:31
поделиться

3 ответа

В коде SQL ядра СУБД Access, когда вам нужно указать, что буквальное значение имеет тип DATETIME , вы можете либо явно привести значение к DATETIME или используйте символы # , чтобы ограничить значение.

Использование явного преобразования с использованием функции CDATE () :

INSERT INTO bs1 (teacher, subject, [date], period) 
   VALUES ('test', 'test', CDATE('2009-12-31 00:00:00'), 0);

Использование литерала DATETIME значение:

INSERT INTO bs1 (teacher, subject, [date], period) 
   VALUES ('test', 'test', #2009-12-31 00:00:00#), 0);

Когда INSERT вводит значение в столбец типа DATETIME , если вы не укажете явное значение DATETIME , механизм неявно попытается для приведения значения к DATETIME . Буквальное значение «test» не может быть приведено к типу DATETIME , и это может быть источником синтаксической ошибки.

Примечание: ничего из вышеперечисленного не применимо к значению NULL . В SQL ядра СУБД Access нет способа привести значение NULL к явному типу, например

SELECT CDATE(NULL)

генерирует ошибку «Недопустимое использование NULL». Поэтому, чтобы указать литерал NULL DATETIME , просто используйте ключевое слово NULL .

Следует помнить, что ядро ​​СУБД Access имеет только один тип временных данных, а именно DATETIME (его синонимы: DATE , TIME , DATETIME и TIMESTAMP ). Даже если вы явно не укажете элемент времени, полученное значение все равно будет содержать элемент времени, хотя и неявный. Следовательно,

3
ответ дан 18 December 2019 в 08:28
поделиться

Я считаю дата зарезервированным словом. Вам необходимо заключить зарезервированные имена полей в квадратные скобки:

INSERT INTO bs1 (учитель, предмет, [дата], период) VALUES ('test', 'test', 'test', 'test')

РЕДАКТИРОВАТЬ: См. Следующую статью для получения полного списка зарезервированных слов в Access 2002 и выше: http://support.microsoft.com/kb/286335

~ md5sum ~

11
ответ дан 18 December 2019 в 08:28
поделиться

В Access разделителем для литеральных значений, вставленных в поля даты, является # , для текстовых полей - ' или ", а значения числовых полей не имеют разделителя. , который предлагает:

INSERT INTO bs1 (teacher, subject, [date], period) 
VALUES ('test', 'test', #2009-12-31#, 0)
5
ответ дан 18 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

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