| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Запрос на выборку в функции |
| Автор: zhefran 9.4.2010, 10:22 | ||
| Здравствуйте уважаемые. Подскажите мне как написать функцию для такого SELECT:
Я хочу узнавать текущее значение sequence передавая ее имя в функцию. Это реально? |
| Автор: DimW 9.4.2010, 10:31 |
нет, текущее занечение сиквенса можно определить только получив его предварительно в этой же транзакции. |
| Автор: Zloxa 9.4.2010, 10:57 | ||
zhefran, вообще краткость далеко не всегда сестра таланта. Ваш вопрос можно трактовать многояко. Я полностью согласен с предыдущим оратором касательно заключения которого он дал по своей трактовке Вашей сентенции. Тем не менее я суть вопроса понял по другому. И мое понимание сути решается средствами динамического SQL. А касательно того, что ж Вам действительно надо, то Вам лишь ведомо.
|
| Автор: zhefran 9.4.2010, 11:19 |
| Zloxa, спасибо, это то, что нужно! В целом мне нужно сделать аналог в Oracle функции MySQL mysql_insert_id(). Функцию буду обязательно вызывать после инсерта. |
| Автор: DimW 9.4.2010, 11:24 |
думаю мы суть вопроса поняли одинаково, просто на мой НЕТ, можно ответить - "да, НО..." |
| Автор: Zloxa 9.4.2010, 11:39 |
А вот если бы Вы все таки озвучили что же вам нужно "в целом", то выяснилось бы что функция вам и в пень не вдулась, потому как что ни наесть рассово-кошерный способ достижения вашей цели - использовать http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_9014.htm#i2122356 кляузу оператора insert |
| Автор: DimW 9.4.2010, 12:07 |
ловко подмечено |
| Автор: zhefran 9.4.2010, 12:29 | ||
Я находил такое решение.
Но я не знаю как потом это i отправить в php страницу. |
| Автор: DimW 9.4.2010, 12:40 | ||
вызывай в PHP и обрабатывай OUT параметр(p_curr_id) |
| Автор: Zloxa 9.4.2010, 12:59 |
Ох и как же далеко оказалась суть от изначально поставленного вопроса И, по сути, выходит, вопрос должен звучать не в этот форум вовсе |
| Автор: DimW 9.4.2010, 13:06 |
не совсем, здесь вопрос должен был быть "как ОТДАТЬ значение", а в форуме по ПХП, "как взять". |
| Автор: azesmcar 9.4.2010, 13:07 | ||
а как отдать он (по его же словам) знал |
| Автор: DimW 9.4.2010, 13:10 | ||
насколько я понял из доки - не меняет, каждая сессия оперирует своими, после выпондения оператора который меняет инкрементное поле. Добавлено через 3 минуты и 8 секунд согласись - получение параметра из функции и из процедуры не одно и тоже, хотя возможно API для работы с конкретной БД делает это различие минимальным. |
| Автор: azesmcar 9.4.2010, 13:15 | ||
хм..будет немного странно, а если мне нужно именно текущее значение? надо будет проверить. |
| Автор: DimW 9.4.2010, 13:17 |
хотел сказать - значения из функции и параметра из процедуры. |
| Автор: azesmcar 9.4.2010, 13:19 | ||
| DimW ты прав
хм..задумался |
| Автор: DimW 9.4.2010, 13:20 |
будет странно если тебе нужно твое значения инкремента, а ты получишь значение "десятого" пользователя, но проверить надо |
| Автор: azesmcar 9.4.2010, 13:21 | ||
да, но мое значение инкремента я могу получить во время вставки..а вот глобальное - видимо никак..точнее только запросом? |
| Автор: DimW 9.4.2010, 13:21 |
ну и слава богу - неожидонности не произошло |
| Автор: DimW 9.4.2010, 13:23 |
логично, иначе необходимо наличие блокировки на объект инкримента. |
| Автор: azesmcar 9.4.2010, 13:29 | ||
Ну это уже другой вопрос как было бы правильнее. Я видимо запутался в базах, может в MSSQL была что-то такое.. |
| Автор: DimW 9.4.2010, 13:34 |
azesmcar, какой прок от значения, которое не характиризует состояние бъекта для текущей сессии, т.к. в любой момент может измениться? |
| Автор: azesmcar 9.4.2010, 13:35 | ||
Ну оно характеризует значение текущего состояние таблицы. Насчет прока сложно сказать Вот например в MSSQL есть IDENT_CURRENT( 'table_name' ), выдает глобальное значение счетчика. |
| Автор: DimW 9.4.2010, 13:39 |
оно характеризует состояние таблицы в прошлом. ща гляну - интересно. |
| Автор: azesmcar 9.4.2010, 13:44 |
машина времени |
| Автор: DimW 9.4.2010, 13:47 | ||||
ну я про то:
http://msdn.microsoft.com/ru-ru/library/ms175098.aspx спасибо что предупредили:
|
| Автор: azesmcar 9.4.2010, 13:51 | ||
ну наверное где-то это может понадобится, не просто так ведь микрософт это придумал (хотя...) |
| Автор: Zloxa 9.4.2010, 13:59 |
| чота вы ваще в офотп ушли.. я вас ваще перестал понимать, о чем вы? ах, ну да, об очевидных вещах, зато с умным человеком ;) Агде суть то? Где суть? Да там прям на месте и ссут!(с) |
| Автор: azesmcar 9.4.2010, 14:03 | ||
Я вот задумался, действительно..зачем это может понадобится, стараюсь понимаешь, задачи выдумываю...не выходит |
| Автор: DimW 9.4.2010, 14:11 |
вот зануда... а потом пришел муж и все испортил (с) |
| Автор: Zloxa 9.4.2010, 14:17 |
бывает нам нужно не точно знать, а достаточно приблизительно. Ну чтобы оценить например, сколько нам лет нужно еще такими темпами двигаться, чтобы до переполнения разрядности значения сиквенса/*идента*/ дожить, потому что некий гарных хлопец решил вдруг гдета в связанной табличке ограничить разрадность восемью знаками. Или чтобы оценить а вообще используется сиквенс/*идент*/ или нет. Или когда смотришь на значение колонки cust_value_3=546549 и думаешь, что это явно с-ка чейта ПК, только вот хз чей. Соответственно можно смело отсечь все таблы где ПК < 546549 вообще, гипопетитечно очень полезная фича, жаль мне не приходило в голову ей пользоваться. |
| Автор: azesmcar 9.4.2010, 14:24 | ||
Ну вот видишь, есть польза от офтопа |
| Автор: Zloxa 9.4.2010, 15:56 |
[sarcasm tone="dark"] Блин.. надо учиться не забывать пользоваться тэгом [sarcasm] [/sarcasm] |
| Автор: azesmcar 9.4.2010, 16:02 |
| Zloxa эээ...ну я тоже как бы не очень серьезно говорил |
| Автор: LSD 9.4.2010, 16:04 |
| Хватит офтопить, а то щас как позабаниваю всех налево и направо |