![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить значение поля? [D7, FireBird]
ККВ © (2006-10-03 14:25:00)Здравствуйте.
Использую IBQuery для вставки записи. Текст: insert into table (name) values ('values') returning id. Вопрос в следующем. Как получить это самое возвращаемое значение? IBQuery.FieldByName('id').AsInteger ругается. Говорит нет такого поля id.
Заранее спасибо.
unknown (2006-10-03 15:21:00) [21]
> Johnmen © (03.10.06 15:19) [16]
> И ещё. Предикат RETURNING используется
returning в fb2 используется в insert запросах.
Johnmen (2006-10-03 15:19:00) [22]И ещё. Предикат RETURNING используется при вызове ПРОЦЕДУР, возвращающих значение.
> Так что это не эмуляция.
Ну, тебе видней.
unknown (2006-10-03 15:15:00) [23]Уже было обсуждение о неподдержке TIBQuery новых фишек.
TIBSQL нормально возвращает по FieldByName.
ККВ (2006-10-03 15:14:00) [24]>> Это эмуляция от ИБЭксперта. Т.е. суть от пользователя он скрывает. А
>>суть такова, что сначала выполняется запрос на получение очередного
>>значения генератора, а потом идет инсерт с этим значением.
В делфи такая конструксия тоже без ошибок отрабатывает. Так что это не эмуляция.
>>Никаких автоинкрементных полей в IB/FB/YA НЕТУ!
Я не так выразился.
sniknik (2006-10-03 15:13:00) [25]> [8]...[10]...[11]
а, понятно. значит [12] лажа, а с ораклом вожможно пройдет
sniknik (2006-10-03 15:11:00) [26]> returning id.
а это не параметр?
тогда вместо FieldByName можно попробовать ParamByName
по аналогии с ADO/mssql, где возвращаемые процедурой аутпут параметры, значения, можно получить если подставить и указать у них свойство возвращаемый.
т.е.
Текст: insert into table (name) values ('values') returning : id
в свойствах ставим pdOutput
после выполнения получаем IBQuery.ParamByName('id').AsInteger
(ну, попробовать так, с ib дел мало имел, могу обмануться)
k2 (2006-10-03 15:10:00) [27]ККВ (03.10.06 15:05) [9]
такое есть в оракле, только синтаксис примерно
insert into (...) values() returning <field_value> into <variable>
может и здесь?
Johnmen (2006-10-03 15:08:00) [28]Это эмуляция от ИБЭксперта. Т.е. суть от пользователя он скрывает. А суть такова, что сначала выполняется запрос на получение очередного значения генератора, а потом идет инсерт с этим значением.
ЗЫ
Никаких автоинкрементных полей в IB/FB/YA НЕТУ!
ККВ (2006-10-03 15:05:00) [29]> [8] Johnmen © (03.10.06 15:01)
>
> > ККВ (03.10.06 14:48) [6]
> > Если все это можно сделать в insert.
>
>
> Кто сказал, что можно? Откуда сведения?
Попробуйте в IBExpert выполнить вставку записи с returning на конце. И в случае автоинкрементного поля id, insert вернет это новое значение id.
Johnmen (2006-10-03 15:01:00) [30]
> ККВ (03.10.06 14:48) [6]
> Если все это можно сделать в insert.
Кто сказал, что можно? Откуда сведения?
clickmaker (2006-10-03 14:54:00) [31]вообще-то я имел в виду наоборот
вставить инсертом, а потом селектом получить id последней вставки
ККВ (2006-10-03 14:48:00) [32]Да, можно получить значение генератора select-ом, потом вставить его в поле id. Но зачем? Если все это можно сделать в insert.
clickmaker (2006-10-03 14:42:00) [33]не аргумент
ККВ (2006-10-03 14:40:00) [34]так проще.
clickmaker (2006-10-03 14:34:00) [35]почему?
ККВ (2006-10-03 14:33:00) [36]Мне надо именно через insert, select не подойдет.
clickmaker (2006-10-03 14:29:00) [37]через select, видимо