Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с запросом на вставку множества записей в таблицу [D5, Paradox, ]


pusrg ©   (2002-01-24 16:49:00) 

Уважаемые мастера помогите разобраться со следующим запросом (БД Парадокс):

insert into Goods (ID, Name, Price)
select Const, Name, Price from Temp;

Где Сonst - какое-то целое число;
поле ID типа integer;

При выполнении выдается ошибка: Type mismatch in expression - не совпадение типов.
Пробовал несколько различных вариантов, а именно:
1. Подставлял вместо Const целое число:
insert into Goods (ID, Name, Price)
select 1, Name, Price from Temp;

2.Использовал параметр:
insert into Goods (ID, Name, Price)
select :ID, Name, Price from Temp;
...
Query.ParamByName("ID").AsInteger:=1;

3.Использовал псевдоним:
insert into Goods (ID, Name, Price)
select (1) as Temp_ID, Name, Price from Temp;

В любом случае один и тот же результат...

В общем случае вопрос сводиться к следующему: можно ли использовать какие-то константы в LocalSQL для вставки их в др. таблицу?

Спасибо за содействие.


pusrg   (2002-01-24 18:22:00) [1]

To Asafr:
Если бы проблема была в зарезервированных, словах LocalSQL мне про это и сказал бы (Name точно не зарезервировано).
А правильный ответ читай выше.


pusrg   (2002-01-24 18:18:00) [2]

To Judith:
Естественно это стандартная конструкция, позволяющая вставлять одну (!) запись в таблицу; конструкция, используемая мной позволяет копировать всю (!) таблицу в одном запросе, РАЗНИЦУ ЧУВСТВУЕШЬ...

To Praco:
Нет ID типа Integer. Хотя по смыслу она и хранит ID из другой таблицы - там это поле автоинкремент.

Теперь отвечаю сам себе (Удивительно как раньше не догадался):
insert into Goods (ID, Name, Price)
select Cast(1 as INTEGER), Name, Price from Temp;

Нужно делать явное преобразование типа, все прекрасно работает...




asafr   (2002-01-24 18:15:00) [3]

Да и Const, сдается мне, тоже из тех слов.


asafr   (2002-01-24 18:13:00) [4]

Парадокс не знаю, но, скорее всего, Name - зарезервированное слово, поле таблицы не должно так называться.


Praco   (2002-01-24 18:08:00) [5]

ID случайно не автоинкремент?


Judith   (2002-01-24 18:00:00) [6]

А почему select? Насколько я знаю, синтаксиз д.б.
insert into Table1 (col1, col2, ...) values (val1, val2, ...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо