| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Вызов хранимой процедуры, проблемы получения резул |
| Автор: gambit 1.2.2010, 23:30 | ||
| Задача: вызвать хранимую процедуру и получить значение. Пишу код:
Получаю ошибку - чтение невозможно по причине отсутствия данных. Подскажите где накосячил? Добавлено через 53 секунды Процедура на 100% рабочая |
| Автор: Ceiceron 1.2.2010, 23:44 |
| трудно сказать, визуально код как бы правильный. если запрос возвращает только одну запись и одно число почему бы не воспользоваться методом com.ExecuteScalar()? |
| Автор: gambit 1.2.2010, 23:57 |
спасибо, на будущее учту, но в данном случае это не помогло. В SQL Server Management, хранимка отрабатывает чудесно, в коде постоянно возвращается null |
| Автор: Ceiceron 2.2.2010, 00:10 | ||
ради теста можно попробовать вызвать процедуру не параметризированно:
|
| Автор: Ceiceron 2.2.2010, 00:26 |
| Студия - это железная болванка как к ней руки приложишь, такой выточка и получиться. В сути, корень ошибки тут один. И мне кажется он где-то в промежутке между выполнением процедуры и чтением результата. Прототип процедуры можно в студию? Желательно кусок скрипта по ее созданию. |
| Автор: gambit 2.2.2010, 00:41 | ||
Процедура проста до безумия))) По изменению
меня больше всего поражает, что в SQL менеджере, процедура чудесно работает |
| Автор: Ceiceron 2.2.2010, 07:58 |
| Начнем с того, что процедура, не функция и return делать явно не должна. гипотетический представите, что процедура однажды вернет более чем одно значение. SQL Server пошлет вас подальше при таком обращении. Если хочется использовать именно функцию, то ее и надо писать (только вызываться она будет селектом). Собственно простой эксперимент позволил установить, что из-за return в хранимке все проблемы. |
| Автор: mrbrooks 2.2.2010, 09:17 |
| gambit, попробуй задать своему параметру свойство Direction = ParameterDirection.Output: |
| Автор: Ceiceron 2.2.2010, 09:45 | ||||
это не совсем верно. Output относиться к out параметам процедуры. тут уж лучше использовать
http://msdn.microsoft.com/en-us/library/59x02y99(VS.71).aspx |
| Автор: mrbrooks 2.2.2010, 10:05 | ||
Точняг! Недобдел. |
| Автор: gambit 2.2.2010, 20:46 | ||
| Задачу решил. Если кому интересно: Вариант 1 - тупо убрать слово return из процедуры, и все заработало. Вариант 2 - изврат с параметрами
Оба варианта решают проблему |
| Автор: Ceiceron 2.2.2010, 23:54 |
| Первый вариант самый цивильный, второй от лукавого (если конечно подобного не требует задача). |
| Автор: mrbrooks 3.2.2010, 08:34 |
| Ceiceron, все таки Output! |