Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
23.03.2016, 18:38
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
Доброго дня. Довольно неожиданно для меня было то что запрос который возвращает больше одной записи нормально работает со скалярной переменной. Просто по опыту в Оракле в таком случае сервер генерирует логичную ошибку: TOO_MANY_ROWS You tried to execute a SELECT INTO statement and more than one row was returned. Такие ошибки искать просто жуть как трудно. Ожидаешь одну запись, потом что-то поменялась в данных и запрос ошибочно возвращает 2 записи. Может в MS так тоже можно сделать? Не проверяя "ручками" результаты запроса и генерируя собственный эксепшен. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:46
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
SELECT @local_variable (Transact-SQL) BOLSELECT @local_variable is typically used to return a single value into the variable. However, when expression is the name of a column, it can return multiple values. If the SELECT statement returns more than one value, the variable is assigned the last value that is returned . в явном виде сказано, что не будет ошибки, и не вернет никакую кучу значений, а вернет последнее обработанное. не нравится такое поведение, не используйте переменную. я такое использую, когда мне надо весь офигительный запрос прогнать, получить план с реальными цифрами и временем, но гнать результат на клиент мне не надо и вставлять куда-то тоже не желаю ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:47
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
Присваивать можно по разному... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
и выбирают люди так как им будет удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:49
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDenton, Огромное спасибо! То что доктор прописал. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:51
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
К слову будет сказано, начиная с 2008 сервера можно совмещать объявление переменной и ее инициализацию: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:54
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDenton, В такой способ можно присвоить значение больше чем одной переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 18:57
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
mezzanineAlanDenton, В такой способ можно присвоить значение больше чем одной переменной?Всё так же, как и с SET ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:01
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
iap, Например, как одним запросом получить значение полей id1, id2 ? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:04
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
Вот несколько вариантов для Вашего первоначального условия: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
либо уповать на лишние логические чтения из одной и той же таблицы: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:04
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
mezzanineiap, Например, как одним запросом получить значение полей id1, id2 ? Код: sql 1. 2. 3. 4. 5. 6.
переменная это вам не автобус, где указано 54 сидячих места, а по факту можно сотню человек штабелями уложить ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:10
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDenton, Еще раз спасибо. Буду использовать 2 опции. Ваш вариант с одной переменной, ну и где нужно больше одной переменной то генерировать исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:13
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
o-o, В Оракле более прозрачно в таких вещах: 1. SELECT INTO только скалярные переменные, больше 1 строки ошибка. 2. SELECT INTO BULK COLLECT только табличные переменные, 0-N строк без ошибок ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.03.2016, 19:13
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDentonлибо уповать на лишние логические чтения из одной и той же таблицы: Код: sql 1. 2. 3. 4. 5. 6.
Лишние чтения еще ладно. Таким способом можно и несогласованные данные получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 10:03
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
чет я не понял юмора топика .. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 10:23
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
Maxx чет я не понял юмора топика Если коротко, то спрашивали как через SELECT присваивание рейсить ошибку, когда возвращается более 1 строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 10:50
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDentonЕсли коротко, то спрашивали как через SELECT присваивание рейсить ошибку мда господа знают толк в извращениях... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 11:03
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDentonкак через SELECT присваивание рейсить ошибку, когда возвращается более 1 строки. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 11:04
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
Maxxмда господа знают толк в извращениях... Это еще мелочи :) мне в том году клиент просил прикрутить к рассылке через Database Mail генерацию XLS файлов по 20-30 метров (+ еще ячейки разукрашивать, чтобы на айфоне было красиво смотреть) и в довесок в теле письма генерировать произвольные графики. Вот то было истинным извращением :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.03.2016, 12:32
|
|||
---|---|---|---|
|
|||
Результат запроса (N строк) в скалярную переменную |
|||
#18+
AlanDentonMaxxмда господа знают толк в извращениях... Это еще мелочи :) мне в том году клиент просил прикрутить к рассылке через Database Mail генерацию XLS файлов по 20-30 метров (+ еще ячейки разукрашивать, чтобы на айфоне было красиво смотреть) и в довесок в теле письма генерировать произвольные графики. Вот то было истинным извращением :) а давайте откроем топик извращений и будем туда постить самые крутые хотелки или самые дебильные реализации. а то иногда беспросветное и нет выхода из этого дерьмантина, и объяснять им бесполезно, и вот с кем еще поделиться, чтобы оценили изврат? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.02.2022, 17:19
|
|||
---|---|---|---|
Результат запроса (N строк) в скалярную переменную |
|||
#18+
для ораклиста несколько неожиданно такое поведение - как в стартовом посте именно что неожиданно - из-за угла бабах! и выбрал сразу 5 значений в одно скалярное оно конечно потом понятно, когда узнаешь но на подсознании оракловый опыт иногда мешает ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&mobile=1&tid=1683856]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 392ms |
0 / 0 |