|
Результат запроса (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:38 |
|
Результат запроса (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:46 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
Присваивать можно по разному... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
и выбирают люди так как им будет удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 18:47 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDenton, Огромное спасибо! То что доктор прописал. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 18:49 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
К слову будет сказано, начиная с 2008 сервера можно совмещать объявление переменной и ее инициализацию: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 18:51 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDenton, В такой способ можно присвоить значение больше чем одной переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 18:54 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
mezzanineAlanDenton, В такой способ можно присвоить значение больше чем одной переменной?Всё так же, как и с SET ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 18:57 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
iap, Например, как одним запросом получить значение полей id1, id2 ? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 19:01 |
|
Результат запроса (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:04 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDenton, Еще раз спасибо. Буду использовать 2 опции. Ваш вариант с одной переменной, ну и где нужно больше одной переменной то генерировать исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 19:10 |
|
Результат запроса (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.
Лишние чтения еще ладно. Таким способом можно и несогласованные данные получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2016, 19:13 |
|
Результат запроса (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:03 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
Maxx чет я не понял юмора топика Если коротко, то спрашивали как через SELECT присваивание рейсить ошибку, когда возвращается более 1 строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 10:23 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDentonЕсли коротко, то спрашивали как через SELECT присваивание рейсить ошибку мда господа знают толк в извращениях... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 10:50 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDentonкак через SELECT присваивание рейсить ошибку, когда возвращается более 1 строки. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 11:03 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
Maxxмда господа знают толк в извращениях... Это еще мелочи :) мне в том году клиент просил прикрутить к рассылке через Database Mail генерацию XLS файлов по 20-30 метров (+ еще ячейки разукрашивать, чтобы на айфоне было красиво смотреть) и в довесок в теле письма генерировать произвольные графики. Вот то было истинным извращением :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 11:04 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
AlanDentonMaxxмда господа знают толк в извращениях... Это еще мелочи :) мне в том году клиент просил прикрутить к рассылке через Database Mail генерацию XLS файлов по 20-30 метров (+ еще ячейки разукрашивать, чтобы на айфоне было красиво смотреть) и в довесок в теле письма генерировать произвольные графики. Вот то было истинным извращением :) а давайте откроем топик извращений и будем туда постить самые крутые хотелки или самые дебильные реализации. а то иногда беспросветное и нет выхода из этого дерьмантина, и объяснять им бесполезно, и вот с кем еще поделиться, чтобы оценили изврат? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2016, 12:32 |
|
Результат запроса (N строк) в скалярную переменную
|
|||
---|---|---|---|
#18+
для ораклиста несколько неожиданно такое поведение - как в стартовом посте именно что неожиданно - из-за угла бабах! и выбрал сразу 5 значений в одно скалярное оно конечно потом понятно, когда узнаешь но на подсознании оракловый опыт иногда мешает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2022, 17:19 |
|
|
start [/forum/topic.php?fid=46&fpage=3&tid=1683856]: |
0ms |
get settings: |
13ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 455ms |
0 / 0 |