powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / получить параметр хранимой процедуры
7 сообщений из 7, страница 1 из 1
получить параметр хранимой процедуры
    #37380341
G_ROM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня такая проблема:
есть хранимая процедура примерно такая:

Код: plaintext
1.
2.
3.
4.
5.
6.
create procedure MyProcName
(IN iID1 int, IN iID2 int, OUT sResult TEXT)
begin
select Column1 into sResult from MyTableName where ID = iID1;
select Column1, Column2, Column3 from MyTableName where ID = iID2;
end

т.е. эта процедура возвращает строку с тремя значениями из трех столбов и одновременно записывает результат другого селекта в выходной параметр. Эта процедура работает нормально и в консоли ее такой вот вызов: call MyProcName(1, 2, @aaa); select @aaa; - дает правильный результат.

вся загвоздка в том, что когда я вызываю эту процедуру из программного кода вот так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
// Объект подключения
MySqlConnection con = new MySqlConnection(connectionString);

// Команда
MySqlCommand cmd    = new MySqlCommand("MyProcName", con);
cmd.CommandType     = CommandType.StoredProcedure;

// Параметры
//
cmd.Parameters.Add(new MySqlParameter("iID", MySqlDbType.Int32, 4));
cmd.Parameters["iID1"].Value = 1;
//
cmd.Parameters.Add(new MySqlParameter("iUserID", MySqlDbType.Int32, 4));
cmd.Parameters["iID2"].Value = 2;
//
cmd.Parameters.Add(new MySqlParameter("sResult", MySqlDbType.Text));
cmd.Parameters["sResult"].Direction = ParameterDirection.InputOutput;

con.Open();
MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);

// Проверить, возвращает ли запрос строку.
if (!reader.HasRows) return false;

// Получить первую строку.
reader.Read();

if (System.DBNull.Value != cmd.Parameters["sResult"].Value)
{
    string sresult = (string)cmd.Parameters["sResult"].Value;
}
else
{
    string sresult = null;
}

// ну и дальше получение остальных параметров
//........
con.Close();


он у меня всегда возвращает null в качестве этого параметра sResult. а если я инициализирую этот параметр и делаю его INOUT, то он возвращает мне то же значение, что было при инициализации. т.е. косяк в том видимо, что он не получает результирующие параметры при использоании ExecuteReader. при использовании ExecuteNonQuery параметры всегда возвращаются. как быть??? может както можно перефразировать саму процедуру и запихать например эти два селекта в один.. я в MySQL не шибко разбираюсь. или же можно как-то всетаки получить параметр?? очень не хочется делать два обращения к базе данных изза этого косяка...
...
Рейтинг: 0 / 0
получить параметр хранимой процедуры
    #37380401
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте прочитать значение параметра после вызова reader.Close()
...
Рейтинг: 0 / 0
получить параметр хранимой процедуры
    #37380432
G_ROM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель, большое спасибо, после reader.Close() получил верный параметр. А не могли бы Вы объяснить, почему до reader.Close() параметр не возвращается?
...
Рейтинг: 0 / 0
получить параметр хранимой процедуры
    #37380440
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу, это ж я нагуглил а не вспомнил

Я так к БД сто лет уже не доступался
ORMы наше всьо
...
Рейтинг: 0 / 0
получить параметр хранимой процедуры
    #37380467
G_ROM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
получить параметр хранимой процедуры
    #38237951
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель, спасибо, дружище! И мне помогло!
...
Рейтинг: 0 / 0
получить параметр хранимой процедуры
    #38237962
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может и мне попробовать.....( задумчиво так), ведь должно тоже помочь по идее................. ))
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / получить параметр хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]