![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Задача: вызвать хранимую процедуру и получить значение.
Пишу код:
Получаю ошибку - чтение невозможно по причине отсутствия данных. Подскажите где накосячил? Добавлено через 53 секунды Процедура на 100% рабочая |
|||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
трудно сказать, визуально код как бы правильный.
если запрос возвращает только одну запись и одно число почему бы не воспользоваться методом com.ExecuteScalar()? |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
||||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
ради теста можно попробовать вызвать процедуру не параметризированно:
|
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
||||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Студия - это железная болванка как к ней руки приложишь, такой выточка и получиться.
В сути, корень ошибки тут один. И мне кажется он где-то в промежутке между выполнением процедуры и чтением результата. Прототип процедуры можно в студию? Желательно кусок скрипта по ее созданию. |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Процедура проста до безумия))) По изменению
меня больше всего поражает, что в SQL менеджере, процедура чудесно работает |
|||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Начнем с того, что процедура, не функция и return делать явно не должна. гипотетический представите, что процедура однажды вернет более чем одно значение. SQL Server пошлет вас подальше при таком обращении. Если хочется использовать именно функцию, то ее и надо писать (только вызываться она будет селектом). Собственно простой эксперимент позволил установить, что из-за return в хранимке все проблемы.
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
gambit, попробуй задать своему параметру свойство Direction = ParameterDirection.Output:
|
|||
|
||||
| Ceiceron |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
это не совсем верно. Output относиться к out параметам процедуры. тут уж лучше использовать
матчасть |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
||||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Задачу решил.
Если кому интересно: Вариант 1 - тупо убрать слово return из процедуры, и все заработало. Вариант 2 - изврат с параметрами
Оба варианта решают проблему |
|||
|
||||
| Ceiceron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 2.8.2007 Где: Дубна Репутация: нет Всего: нет |
Первый вариант самый цивильный, второй от лукавого (если конечно подобного не требует задача).
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
Ceiceron, все таки Output!
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |