Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выполнение хранимки / 5 сообщений из 5, страница 1 из 1
26.04.2007, 21:43
    #34491180
!help
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимки
вызываю хранимку, которая инсертит данные, надо получить ID последней записи.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["WebConnection"].ConnectionString);
SqlCommand cmd = new SqlCommand("userSP", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@data", data);
                
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Close();
как это сделать пробовал в хранимке прописать output параметр, но не знаю, как его прочитать

пробовал вторым запросом сделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SqlCommand cmd = new SqlCommand("userSP", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@id", "id");
                
cmd.Connection.Open();
cmd.ExecuteNonQuery();
[color=blue]
cmd.CommandText = "select SCOPE_IDENTITY()";
id = cmd.ExecuteScalar().ToString();
[/color]
или так
[color=blue]
id = cmd.ExecuteReader().GetString( 0 );[/color]
cmd.Close();

но понимаю, что правильней получать через output
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SqlCommand cmd = new SqlCommand("userSP", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@id", "id");

SqlParameter param = new SqlParameter("@id");
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
подскажите, как считать возвращаемое значение
...
Рейтинг: 0 / 0
27.04.2007, 07:23
    #34491508
Sharic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимки
но понимаю, что правильней получать через output
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SqlCommand cmd = new SqlCommand("userSP", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@id", "id");

SqlParameter param = new SqlParameter("@id");
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
подскажите, как считать возвращаемое значение

Не совсем понятно, ты передаешь id со значением и в нее же хочешь записать результат?
Покажу пример, когда id передается со значением, а для возвращаемого значения есть другая переменная.
Попробуй так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SqlCommand cmd = new SqlCommand("userSP", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@id", "id");

// а теперь для работы с переменной, которую ты объявил в хранимке как output
SqlParameter ret = cmd.Parameters.Add("@output", SqlDbType.Int);
 ret.Direction = ParameterDirection.Output;
  cmd.ExecuteNonQuery();
  int retval = (int)ret.Value;
...
Рейтинг: 0 / 0
28.04.2007, 13:53
    #34495459
!help
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимки
Sharic , Спасибо большое!
...
Рейтинг: 0 / 0
28.04.2007, 16:19
    #34496065
Думающий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимки
авторparam.Direction = ParameterDirection.Output;

А что не было чего то типа
Код: plaintext
param.Direction = ParameterDirection.InputOutput;
...
Рейтинг: 0 / 0
29.04.2007, 16:05
    #34496989
!help
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимки
есть, но объясни зачем его использовать, если я знаю @id записи, то зачем мне его получать ещё раз, если только мне не надо его изменять или получать значение какого-либо другого поля.
Но тут другой вопрос, стоит ли усложнять, логику, чтоб писать на 3-е строчки кода меньше.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выполнение хранимки / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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