0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
|||||||||||
1 | |||||||||||
Процедура в приложении не возвращает значения20.05.2013, 02:13. Показов 1923. Ответов 12
Метки нет (Все метки)
Есть элементарная процедура T-SQL привязанная к БД
Подключаем через "Мастер настройки источника данных" VS2010 к своему приложению эту процедуру. Она заносится в QueriesTableAdapter. Пытаемся выполнить ее в приложении.
В чем причина? И как получить нормальное значение?
0
|
20.05.2013, 02:13 | |
Ответы с готовыми решениями:
12
Процедура возвращает столбец вместо одного значения Процедура не возвращает значение Что возвращает процедура? Что возвращает процедура? |
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
20.05.2013, 04:47 | 2 |
Через QueriesTableAdapater вы можете выполнять команды либо как Scalar, либо как NonQuery (Настроивается в дизайнере).
Scalar возвращает значение первой ячейки первого столбца из результирующего набора. NonQuery возвращает количество обработанных коммандами INSERT, UPDATE или DELETE строк. Вы же хотите получить значение параметра @RETURN_VALUE. Это нужно делать через коллекцию параметров.
1
|
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
||||||
20.05.2013, 15:02 [ТС] | 3 | |||||
Что-то я бился пол дня, но так и не понял как это сделать =/
Я так понял что-то вроде этого должно быть?
Походу возвращаемая переменная находится в command.Parameters[0]? Млин, я вообще запутался.
0
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
20.05.2013, 16:06 | 4 |
Используйте дизайнер. Он надежнее. Если он в вашей ХП найдет @RETURN_VALUE, значит в этом @RETURN_VALUE будет гарантированно находится значение, возвращаемое при помощи RETURN из ХП. Вы в первом случае использовали же дизайнер, что ж вас на ручное написание рутинного кода потянуло?
1
|
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
|
20.05.2013, 17:11 [ТС] | 5 |
Не понял, какой дизайнер и как с помощью его найти @RETURN_VALUE ?
0
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
20.05.2013, 17:44 | 6 |
Эммм ... Дизайнер - это средство, при помощи которого можно визуально проектировать приложение. Я так понял, в свою QueriesTableAdapter через дизайнер делали. Вот там выберите свою продцедуру, зайдите в коллекцию параметров и посмотрите, какие параметры дизайнер автоматически определяет.
1
|
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
|
20.05.2013, 18:35 [ТС] | 7 |
Так да, смотрю коллекцию параметров своей хранимой процедуры, вижу выходное @RETURN_VALUE в этой коллекции под номером [0].
Я не знаю как добраться из приложения к этому значению.
0
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||||||
20.05.2013, 18:53 | 8 | |||||
Самой простой способ:
1
|
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
|
20.05.2013, 20:18 [ТС] | 9 |
А что за переменная command?
0
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
21.05.2013, 05:11 | 10 |
Некий объект типа SqlCommand (я так понял, у вас БД MS SQL Server). Вы парой постов выше используете объект с таким же именем.
1
|
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 7
|
||||||
22.05.2013, 14:52 [ТС] | 11 | |||||
Все, получилось. Делал по такому шаблону:
0
|
0 / 0 / 0
Регистрация: 15.08.2017
Сообщений: 3
|
|
21.02.2019, 12:03 | 12 |
Привет.
Так никто и не смог добраться до параметров через TableAdapter? В отладчике параметры видно через структуру CommandCollection, а в коде такого нет. И там нужные значения, а сама хранимка возвращает null.
0
|
0 / 0 / 0
Регистрация: 15.08.2017
Сообщений: 3
|
|||||||||||
22.02.2019, 12:11 | 13 | ||||||||||
Может кому пригодится. В инете ответа нормального не нашел.
Выкрутился так. На DataSet.xsd переходим к коду. В нем создает нужный partial class, в который добавляем новый метод, код для которого берем из DataSet.Disigner.cs (метод созданный VS). В нем подменяем кусок вызова хранимой процедуры:
заменили на
Можно еще не partial class, а создать новый класс, унаследованный от исходного. И там либо переопределить исходный метод, либо так же создать новый как описано выше. Не запутайтесь с namespace.
0
|
22.02.2019, 12:11 | |
22.02.2019, 12:11 | |
Помогаю со студенческими работами здесь
13
Хранимая процедура ничего не возвращает DataGridView и хранимая процедура - возвращает два отчета Хранимая процедура возвращает только одну запись Собственная процедура/функция которая возвращает код символа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |