|
|
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Johnnyyy, и что тут неожиданного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 12:52:54 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 12:55:33 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
kdvJohnnyyy, читал бы ты http://www.ibase.ru/devinfo/sp_call.htm не нашел там присваивание в переменную без into ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:03:14 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Johnnyyy, понимаешь ли когда ты делаешь присваивание переменной её значение должно измениться в любом случае, поскольку записей нет логично записать null. Когда делается select ... into, то оно значение переменной измениться только если запрос вернёт данные. Всё довольно просто. И по мне так это намного лучше чем делает Оракл, генерируя исключение NO_DATA_FOUND ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:08:17 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисJohnnyyy, понимаешь ли когда ты делаешь присваивание переменной её значение должно измениться в любом случае, поскольку записей нет логично записать null. Когда делается select ... into, то оно значение переменной измениться только если запрос вернёт данные. Всё довольно просто. И по мне так это намного лучше чем делает Оракл, генерируя исключение NO_DATA_FOUND Так я понял это опытным путем. Ни в одном туторе просто не находил конструкции с описанием, которую привел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:13:33 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:25:14 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисJohnnyyyНи в одном туторе просто не находил конструкции с описанием, которую привел а это что? спасибо за ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:35:06 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Симонов Денисеё значение должно измениться в любом случае... то оно значение переменной измениться только если запрос вернёт данные.Сам себе противоречишь. Был null, и стал null - где изменение? Симонов ДенисИ по мне так это намного лучше чем делает Оракл, генерируя исключение NO_DATA_FOUNDЧем оно "намного" лучше? И там и там нужно написать обертку (хоть count(*), max(value) into l_cnt, l_value или обработку исключения) если надо знать точно, выбралась ли одна или ноль записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:37:04 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
ГхостикСам себе противоречишь. Был null, и стал null - где изменение? а если был не null, стал null ГхостикЧем оно "намного" лучше? тем что писать меньше, если точно знаешь что выбираемый столбец not null, то достаточно сделать. Код: plsql 1. 2. 3. а чтобы определить сколько записей вернулось 1 или 0, есть такая переменная как ROW_COUNT Код: plsql 1. 2. и никаких тебе обработок исключений, MAX, COUNT. Тем более это не самые дешёвые операции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 13:55:15 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисГхостикСам себе противоречишь. Был null, и стал null - где изменение? а если был не null, стал nullВыкинул половину своего утверждения, ложную, и говоришь что оно истинное. Симонов Денисесли точно знаешь что выбираемый столбец not null, то достаточно сделать.Опасная практика. Сегодня он not null, а завтра nullable, а весь код не забыли ли просмотреть? Симонов Денисписать меньшеСравни: Код: plsql 1. 2. Код: plsql 1. 2. Разница - на одно объявление переменной. Это ты называешь "намного"? Симонов ДенисТем более это не самые дешёвые операцииО да. На нуле либо одной записи - особенно тяжелые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:12:17 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Гхостик, а теперь внимание, неожиданно запрос Код: sql 1. вернул более 1 записи и вот это Код: sql 1. спокойно проглотит эту ситуацию, где по идее должно быть исключение. Для обеспечения того же самого вам ещё потребуется добавить Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:27:21 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, тьфу не то написал Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:30:40 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Неудобные вопросы просто игнорируем? Симонов Денисспокойно проглотит эту ситуацию, где по идее должно быть исключение. Да. Но смена количества полей в PK (одну запись обычно ищут именно так) - гораздо более редкое действие, чем смена not null на null. И код при этом просматривается тщательней. А вообще, в оракле я обычно ни count, ни exception не делаю там, где предполагается одна запись. Там, где это может быть ошибкой пользовательского ввода - там обрабатываю no_data_found, и too_many_rows тоже не пропадут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:39:19 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
ГхостикОпасная практика. Сегодня он not null, а завтра nullable, а весь код не забыли ли просмотреть? это что ли неудобный вопрос? Ну так есть поля которые никогда не станут nullable и это я знаю точно. Хотя подход с проверкой количества записей универсальнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:52:24 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамПо большому счету "select into param_list" это тот же "for select" только выполняющийся один раз, dimitrименно так и реализовано. Цикл с ограничением сингулярности. ...и выкопали стюардессу. А правильно ли это "с ограничением", а не "с проверкой" ? Т.е. в 2.1 в check-триггере Код: sql 1. выдал ошибку "select is illegal in this context" Можно переписать на for с отдельным счётчиком, или с проверкой row_count, которую вроде бы поправили (но какой смысл у row_count внутри check в процессе Insert?) var = (select ... ) выдаст ошибку при 2 и более значениях. А select into без for - не выдаст. И выдаст ли он первую строку или последнюю - детали реализации (возможно уже задокументированные, но тем не менее - детали). И возникает сомнение, правильно ли идеологически, что select-into не ограничивает (не проверяет, не навязывает) сингулярность результата ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 16:41:04 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
AriochА select into без for - не выдаст. И выдаст ли он первую строку или последнюю - детали реализации (возможно уже задокументированные, но тем не менее - детали). И возникает сомнение, правильно ли идеологически, что select-into не ограничивает (не проверяет, не навязывает) сингулярность результата ? Чего, чего? Ещё как выдаст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 16:57:51 |
|
||
|
|

start [/forum/topic.php?fid=40&gotonew=1&tid=1563888]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
7ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 447ms |

| 0 / 0 |
