Страница 1 из 2

INSERT ... RETURNING и FIB+

Добавлено: 19 фев 2008, 18:13
Kotъ-Begemotъ
Подскажите, пожалуйста как правильно использовать данную конструкцию?

Код: Выделить всё

INSERT INTO TABLE1 (NAME) 
VALUES (:NAME) 
RETURNING :NEW_ID 
Так? А потом проверить ID как

Код
DataSet1.ParamByName('NEW_ID').Value

Что-то не получается :( Может я чего-то напутал?

Добавлено: 19 фев 2008, 20:08
kdv
для этого сначала надо выяснить - ты пользуешься FIBPlus, в которой уже реализована эта функциональность, или еще нет?
затем, надо почитать релизноты по FB 2.0, на предмет использования этого варианта insert.
дальше, надо подумать, чем тебя не устраивает обычный gen_id.

Добавлено: 19 фев 2008, 20:22
Kotъ-Begemotъ
kdv писал(а):для этого сначала надо выяснить - ты пользуешься FIBPlus, в которой уже реализована эта функциональность, или еще нет?
затем, надо почитать релизноты по FB 2.0, на предмет использования этого варианта insert.
дальше, надо подумать, чем тебя не устраивает обычный gen_id.
FIB+ почти самый последний 6,8 (уже есть 6,8,5) так что поддерживает, уверен. По 2,0 почитаю, спасибо. Я так понял что это только с FB 2.0 появилось? А GEN_ID не то чтобы совсем не устраивает, просто мне кажется что в коде с returning будет менее громоздко, да и надо освоить - никогда не пользовался, хочу попробовать...

Добавлено: 19 фев 2008, 21:39
Kotъ-Begemotъ
А кстати, Release Notes пишутся "накопительно"? То есть RN к 2.0.3 включает все изменения с 1.5 ?

Добавлено: 19 фев 2008, 21:50
kdv
А GEN_ID не то чтобы совсем не устраивает, просто мне кажется что в коде с returning будет менее громоздко
будет более громоздко и менее совместимо.
да и надо освоить - никогда не пользовался, хочу попробовать...
с таким подходом тебя ждет очень веселая жизнь. Обязательно попробуй, желательно вместе - returning, execute statement, курсоры в процедурах, derived tables (select from select) и т.д.. Только по отдельности не вздумай - весь кайф пропадет.
По 2,0 почитаю, спасибо. Я так понял что это только с FB 2.0 появилось?
да. ты читай давай. вот перец, я фигею. вместо того чтобы релизноты по интересующему его оператору почитать, начинает вопросы на форуме задавать.

Re: INSERT ... RETURNING и FIB+

Добавлено: 19 фев 2008, 22:13
dimitr
Kotъ-Begemotъ писал(а):Так?
не так. Пиши в саппорт фибплюсовцам.

Re: INSERT ... RETURNING и FIB+

Добавлено: 19 фев 2008, 22:26
Kotъ-Begemotъ
dimitr писал(а):
Kotъ-Begemotъ писал(а):Так?
не так. Пиши в саппорт фибплюсовцам.
Отписал давно. Тишина :(((

Добавлено: 20 фев 2008, 10:18
Attid
нда интересно это лечится ? =)

допустим я тоже когда-то не знал что такое RETURNING и с чем его едят.

но вопервых не плохо было бы узнать с какой версии он работает
во вторых попробывать выполнить это в isql
в третьих задуматься для чего в компонентах используется символ ":"(двоеточие)

Добавлено: 20 фев 2008, 10:52
kdv
поскольку мне нафиг insert returning не уперся, и чтобы натолкнуть автора на мысль, дам теорию.
В release notes есть описание returning для insert. И там есть такой синенький прямоугольничек Note с 6-ю пунктами. См. пункт 2.
Далее, еще один намек. Например, есть execute procedure. Если мы вызываем этот оператор внутри процедуры и триггера, мы можем получить из него данные только если укажем аналогичную конструкцию returning. Но пишем-ли мы ее, вызывая Execute procedure с клиента?
ок, не пишем, потому что парсер sql сам нам говорит о том, что это выполнение процедуры.
Теперь читаем пункт 3 в том же синеньком прямоугольничке.

p.s. короче, я еще раз повторюсь, что для данного оператора при обычном использовании в компонентах нужна специальная поддержка в коде компонент. Насколько я в курсе, она есть в каком-то виде в FIBPlus, и больше ее нет нигде.

p.p.s. и последнее замечание, самое важное по данному топику.
Берем гугль, ищем строку "insert returning fibplus". Первая же ссылка дает нам следующее:
http://www.devrace.com/ru/fibplus/articles/2004.php
где мы легко и непринужденно читаем пункт 11.

Добавлено: 20 фев 2008, 11:24
Attid
p.s. короче, я еще раз повторюсь, что для данного оператора при обычном использовании в компонентах нужна специальная поддержка в коде компонент. Насколько я в курсе, она есть в каком-то виде в FIBPlus, и больше ее нет нигде.
в UIB и MSE тоже поддержка есть, выполняю в обычной квери\датасете.

Добавлено: 20 фев 2008, 11:32
WildSery
kdv писал(а):Берем гугль, ищем строку
(Извиняюсь за флуд) - это ж надо отдельное окно браузера открывать!

Добавлено: 20 фев 2008, 11:55
Attid
кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:

Добавлено: 20 фев 2008, 12:54
kdv
кстати может гугловский поисковик добавить на страничку создания вопроса ?
не осилю. :)

Добавлено: 20 фев 2008, 13:54
Attid
да там легко, вот только насколько красиво это будет, надо одну строчку вставить, строчку взять на гугле на той странице где создовал поисковик.

а вставлять надо в шаблон, он у тебя все равно один, а там простой ХТМЛ, надодишь нужную страници и вуаля.

Добавлено: 20 фев 2008, 20:09
Kotъ-Begemotъ
Attid писал(а):кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:
Ау-ау... Большие белые парни... Сами родились со знаниями IB/FB ? Или в детском садике учили? Или сами по книжкам за 15 минут освоили? Ребят, со стороны на себя посмотрите... Станет неприятно, каку минимум. Особенно обнащаюсь к любителям бессодержательно что-нибудь сказануть. Нет что сказать по делу - и не напрягай форум! Промолчи лучше. Я вот стреляю может много лучше присутствующих и что? Это повод каждого на стрелковом форуме пытаться причморить? А ведь взрослые же вроде люди... :(((

Добавлено: 20 фев 2008, 23:38
kdv
слушай, иди в пень. Да, Я САМ НАУЧИЛСЯ. Тыкал куда попало, читал доку (ПЕЧАТНУЮ) (некоторые разделы по 5-6 раз, пока не доходило) и т.д. И ничего, за два года спецом по ib стал, к 1997 году уже сайт сделал. Правда, у меня базовые знания по СУБД уже были, я с 87 года этим делом интересовался, читал все, до чего можно было дотянуться, исходники копал, скачивал на модеме 2400, в Москву за файлами ездил, на дискетках привозил.
Это вам, ..., теперь и гугль-яндекс, и форумы, и статьи на русском, и доки в pdf, и книжки, чего хочешь. Казалось бы - чего еще?
А ведь взрослые же вроде люди...
а тебе самому не стыдно?
Нет что сказать по делу - и не напрягай форум! Промолчи лучше.
тут я рулю. поэтому не надо пытаться самовольно модерировать.

Добавлено: 21 фев 2008, 12:37
Attid
Kotъ-Begemotъ писал(а):
Attid писал(а):кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:
Или сами по книжкам за 15 минут освоили? Ребят, со стороны на себя посмотрите...
интересно почему ты на первый мой ответ ничего не прореагировал.

по поводу остального Дима все уже расказал , от себя добавлю что я не такой монстр и с восмидесятых годов не занимаюсь субд, компьтер с бейсиком только в 90х увидел, но на полочке у меня с десяток книг по sql по птичке правда всего 3 или 4 но я их все прочитал =)

Добавлено: 21 фев 2008, 12:41
Merlin
Attid писал(а): интересно почему ты на первый мой ответ ничего не прореагировал.
Не засоряй форум. И вообще - как стоишь перед подпоручиком (С) :)

Добавлено: 21 фев 2008, 16:34
Kotъ-Begemotъ
2 kdv
В твоих познаниях я не сомневался, достаточно посмотреть на статьи на данном сайте и их авторство, и почитать твой блог. Да и ответы твои, как правило аргументированы и ссылки на источники часть приводятся, так что я говорл немного не об этом.

А по поводу того, что если не знаешь, лучше и не использовать - здесь, считаю ты неправ. Если не знаешь и не пробуешь, откуда решение нужно это использовать или нет? Только из практики, имхо...

Добавлено: 21 фев 2008, 17:01
kdv
что если не знаешь, лучше и не использовать - здесь, считаю ты неправ.
прав я, прав. :) это как ребенку дать одновременно железный, пластмассовый и деревянный конструкторы, кучей.
Начинать надо с чего-то одного. Потом знания расширять. Например, представь что не было бы insert returning. Ты программу бы не смог написать? А ведь это фишка, которая просто является дополнением к базовой функциональности.
Или, классический пример по execute statement - начинающие на него бросаются, потому что думать по другому не могут. И так в него и влипают. А результат известен, и плачевен.
Знать как что-то работает и обязательно использовать это - не одно и то же. Например, я в некотором смысле знаю Informix. Ну и что? :)