Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 11
1
Другое

FirebirdSql.Data.Common.IscException: multiple rows in singleton select

29.06.2020, 16:07. Просмотров 226. Ответов 9

При выводе таблицы выходит данная ошибка в отладке, что могло вызвать?

Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: FirebirdSql.Data.Common.IscException: multiple rows in singleton select

Ошибка источника:

C#
1
2
3
  lstOutTable = (crClass.getCatRegl_OutTable()); // строка 533
        if (lstOutTable.Count > 0)  // строка 534
        {  // строка 535
Исходный файл: c:\inetpub\YaKITv4.1.MSH\WEBFORMS\cat_regl.ascx.cs Строка: 533

Трассировка стека:

[IscException: multiple rows in singleton select]
FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.Proces sResponse(IResponse response) +70
FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadRe sponse() +60 FirebirdSql.Data.Client.Managed.Version12.GdsStatement.Execu te() +240 FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(Com mandBehavior behavior, Boolean returnsSet) +293
FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery() +44

[FbException (0x1400014c): multiple rows in singleton select]

FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery() +185
YaKIT.C1.DataBase.FireBird.execSqlQuery(String query) +330
YaKIT.C1.DataBase.DBConnectNotParams.execSqlQuery(String query) +213

[Exception: YaKIT.C1.Database => execSqlQuery :: update z_B24D1A8FAC set g1=(select t1.zn101 from data_9002 t1 where t1.gr=3 and t1.ULUS is not null and z_B24D1A8FAC.ULUS=t1.ULUS and t1.OKPD is not null and z_B24D1A8FAC.OKPD=t1.OKPD and (t1.razrez in('ОТЧЕТ', 'УЛУС', 'ТЕРР')))] YaKIT.C1.DataBase.DBConnectNotParams.catchThrow(String message, Exception ex) +144
C#
1
2
3
//procedure database
sql = 'insert into data_9002 (razrez, ulus, okpo, okpd, gr, god, mes, zn0, zn101) select ''ОТЧЕТ'' as razrez, k.ulus, k.okpo, d.s1 as okpd, d.gr as gr, ' || :god || ', ' || :mes || ', 1 as zn0, zn as zn101 from frm_data' || :god || '_period' || :mesv || '_3 d, s_okpo' || :god || '_period' || :mesv || ' k, s_ko' || :god || '_period' || :mesv || '_3 ko where d.ko=k.okpo and d.ko=ko.ko and coalesce(d.zn,0)<>0 and d.st=''10.3.1'''; EXECUTE STATEMENT (:sql) WITH autonomous transaction;
sql = 'insert into data_9002 (razrez, ulus, okpo, okpd, gr, god, mes, zn0, zn101) select ''ОТЧЕТ'' as razrez, k.ulus, k.okpo, ''0'' as okpd, d.gr as gr, ' || :god || ', ' || :mes || ', 1 as zn0, zn as zn101 from frm_data' || :god || '_period' || :mesv || '_3 d, s_okpo' || :god || '_period' || :mesv || ' k, s_ko' || :god || '_period' || :mesv || '_3 ko where d.ko=k.okpo and d.ko=ko.ko and coalesce(d.zn,0)<>0 and d.st=''10.3'''; EXECUTE STATEMENT (:sql) WITH autonomous transaction;
YaKIT.C1.DataBase.DBConnectNotParams.execSqlQuery(String query) +445
YaKIT.WebForms.csCatRegl.getCatRegl_OutTable() +18277
YaKIT.WebForms.cat_regl.drawOutTable() in c:\inetpub\YaKITv4.1.MSH\WEBFORMS\cat_regl.ascx.cs:533
YaKIT.WebForms.cat_regl.create() in c:\inetpub\YaKITv4.1.MSH\WEBFORMS\cat_regl.ascx.cs:296
YaKIT.WebForms.cat_regl.Page_Load(Object sender, EventArgs e) in c:\inetpub\YaKITv4.1.MSH\WEBFORMS\cat_regl.ascx.cs:143
System.Web.UI.Control.OnLoad(EventArgs e) +108
System.Web.UI.Control.LoadRecursive() +90
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Control.LoadRecursive() +185
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1607

Нашел YaKIT.C1.Database.dll в поисках запроса но там не нашел данный запрос
C++
1
update z_B24D1A8FAC set g1=(select t1.zn101 from data_9002 t1 where t1.gr=3 and t1.ULUS is not null and z_B24D1A8FAC.ULUS=t1.ULUS and t1.OKPD is not null and z_B24D1A8FAC.OKPD=t1.OKPD and (t1.razrez in('ОТЧЕТ', 'УЛУС', 'ТЕРР')))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2020, 16:07
Ответы с готовыми решениями:

При добавлении данных в DGV появляется ошибка "multiple rows in sigleton select"
Добрый день! Может кто объяснить почему при добавлении в датагрид вылазиет ошибка multiple rows in...

Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound
Здравствуйте! Столкнулся с такой проблемой. Есть компонент dataGridView, он связан с одной из...

Could not load file or assembly FirebirdSql.Data.FirebirdClient
народ. создал подключение все ок. но вот переделал винформ приложение в сервис и логер пишет такую...

Ошибка Multiple rows in singleton select
Добрый день! есть процедура добавления в таблицу с входными параметрами : При попытки вызвать ее...

9
Эксперт .NET
7398 / 5164 / 889
Регистрация: 21.01.2016
Сообщений: 19,892
29.06.2020, 16:45 2
Цитата Сообщение от Macrosofaq Посмотреть сообщение
FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery() +185
Подразумевается, что таким образом вызывается запрос, который ничего не должен возвращать. А у вас, судя по всему, что-то да возвращается из базы.

Добавлено через 6 минут
Macrosofaq, а! Ну конечно!

SQL
1
2
3
UPDATE z_B24D1A8FAC 
SET g1=
(SELECT t1.zn101 FROM data_9002 t1 WHERE t1.gr=3 AND t1.ULUS IS NOT NULL AND z_B24D1A8FAC.ULUS=t1.ULUS AND t1.OKPD IS NOT NULL AND z_B24D1A8FAC.OKPD=t1.OKPD AND (t1.razrez IN('ОТЧЕТ', 'УЛУС', 'ТЕРР')))
Что будет, когда вложенный запрос вернёт более одной строки?) Именно то, что вы и получили.
0
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 11
29.06.2020, 16:59  [ТС] 3
Цитата Сообщение от Usaga Посмотреть сообщение
SQLВыделить код
1
2
3
UPDATE z_B24D1A8FAC
SET g1=
(SELECT t1.zn101 FROM data_9002 t1 WHERE t1.gr=3 AND t1.ULUS IS NOT NULL AND z_B24D1A8FAC.ULUS=t1.ULUS AND t1.OKPD IS NOT NULL AND z_B24D1A8FAC.OKPD=t1.OKPD AND (t1.razrez IN('ОТЧЕТ', 'УЛУС', 'ТЕРР')))
Что будет, когда вложенный запрос вернёт более одной строки?) Именно то, что вы и получили.
Строков то там и больше получается, запрос то по идее в этом заключается, а в этот запросе должен выглядеть так
SQL
1
2
UPDATE z_B24D1A8FAC 
SET g1 IN (SELECT t1.zn101 FROM data_9002 t1 WHERE t1.gr=3 AND t1.ULUS IS NOT NULL AND z_B24D1A8FAC.ULUS=t1.ULUS AND t1.OKPD IS NOT NULL AND z_B24D1A8FAC.OKPD=t1.OKPD AND (t1.razrez IN('ОТЧЕТ', 'УЛУС', 'ТЕРР')))
Добавлено через 8 минут
но я не понял где исправить этот запрос
0
Эксперт .NET
7398 / 5164 / 889
Регистрация: 21.01.2016
Сообщений: 19,892
29.06.2020, 17:04 4
Цитата Сообщение от Macrosofaq Посмотреть сообщение
Строков то там и больше получается, запрос то по идее в этом заключается, а в этот запросе должен выглядеть так
У меня возникли сомнения в том, что вы понимаете, что за запрос написали.
0
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 11
29.06.2020, 17:09  [ТС] 5
Цитата Сообщение от Usaga Посмотреть сообщение
У меня возникли сомнения в том, что вы понимаете, что за запрос написали.
ну я вот пытаюсь разобраться, в sql давно малость поработал и вот сейчас такая проблемка. Можете помочь?
0
Эксперт .NET
7398 / 5164 / 889
Регистрация: 21.01.2016
Сообщений: 19,892
29.06.2020, 17:13 6
Macrosofaq, я вижу, что этот запрос на всю голову не правильный. В нём логическая ошибка. Вы пытаетесь переписать ВСЕ поля g1 в таблице z_B24D1A8FAC. При этом ваш подзапрос возвращает множество значений.

Вам нужно определиться с тем, что же на самом деле вы хотите сделать.
0
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 11
29.06.2020, 17:23  [ТС] 7
Цитата Сообщение от Usaga Посмотреть сообщение
я вижу, что этот запрос на всю голову не правильный. В нём логическая ошибка. Вы пытаетесь переписать ВСЕ поля g1 в таблице z_B24D1A8FAC. При этом ваш подзапрос возвращает множество значений.
Вам нужно определиться с тем, что же на самом деле вы хотите сделать.
Можете написать на эл. почту, в связи с правилами форума kidroy0511@gmail.com
0
Эксперт .NET
7398 / 5164 / 889
Регистрация: 21.01.2016
Сообщений: 19,892
29.06.2020, 17:28 8
Macrosofaq, я предлагаю продолжить общение не форуме. Уж извините, но я не персональный репетитор)

Команда UPDATE предполагает наличие условия для отбора записей поля которых нужно обновить. У вас этого нет. Подзапрос с оператором SET не должен возвращать более одного значения, иначе как СУБД решит какое из них нужно выбрать. Это - логическая ошибка.
0
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 11
29.06.2020, 17:32  [ТС] 9
Цитата Сообщение от Usaga Посмотреть сообщение
Команда UPDATE предполагает наличие условия для отбора записей поля которых нужно обновить. У вас этого нет. Подзапрос с оператором SET не должен возвращать более одного значения, иначе как СУБД решит какое из них нужно выбрать. Это - логическая ошибка.
Я одно понять хочу еще, где этот запрос вписан? YaKIT.C1.Database.dll по идее ту должен быть но его нет.
0
Эксперт .NET
7398 / 5164 / 889
Регистрация: 21.01.2016
Сообщений: 19,892
29.06.2020, 17:34 10
Macrosofaq, это вы уже сами ищите в своём коде. Запрос может формироваться динамически. Поэтому по прямому поиску текста вы его можете и не найти.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2020, 17:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

получить все записи из <select multiple='multiple'
как через JQUERY получить все записи из &lt;select multiple='multiple'

<SELECT ... MULTIPLE>...</SELECT> Как вытащить всё что выбрано?
Есть форма SELECT c MULTIPLE ON. Как в ASP вытащить всё что выбрал пользователь? (Желательно на...

Common Data Types
Вопрос элементарный, просто ради интереса :) Я понимаю, что это, в принципе, одно и то же, но все...

Select 200 million of rows
Всем привет, я собираю статистику по рекламе сжатую в 5 минутку, почасовка и за сутки. это 3 разные...

Select multiple
Нужен комоокс с возможностью множественного выора Написал так: &lt;select multiple=&quot;multiple&quot;...

<select multiple>
Всем привет! Каким образом можно обрабатывать &lt;select multiple name=iii&gt; через POST еcли в iii...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.