Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возрат SCOPE_IDENTITY() 
V
    Опции темы
Gregoryy
Дата 13.2.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Народ помогите решить вот такой вопрос. У меня ест большой запрос вставки новой записи в одной таблице и обновление записи в другой таблице. После ставки я получаю идентификатор новой записи. Вот как мне полученное число передать за приделы запроса?

Это сообщение отредактировал(а) Gregoryy - 13.2.2008, 13:53
PM MAIL ICQ   Вверх
Mymik
Дата 13.2.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



а что значит передать за пределы запроса ??? в смысле возвратить на клиент ???
Когда ты передаешь параметры в процедуру тебе надо сделать параметр ID -->>
Код

command.Parameters.Add( OutputParameter("@ID",DbType.Int32) );


Потом выплоняешь запрос и
Код

this.ExecuteNonQuery(command);
int ID = (int) command.Parameters["@ID"].Value;


А непосредственно в SQL процедуре ты пишешь 
В передаваемых параметрах
Код

@ID int    OUTPUT,

в теле
Код

SET @ID = SCOPE_IDENTITY()


Это сообщение отредактировал(а) Mymik - 13.2.2008, 14:39


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Gregoryy
Дата 13.2.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Короче дело в том, что я пишу сейчас форму где генерируется ссылка на созданный новый топик или ответ на форуме. И мне надо в эту ссылку передать ID записи. 
Код

string MySqlSelect = "INSERT INTO systems_Forums_Topic (Forum_ID,TITLE) VALUES (" + sForumId + ",'" + sTitle + "');"
            +" DECLARE @Nomer int; SET @Nomer = SCOPE_IDENTITY();"
            +" INSERT INTO systems_Forums_Post (TOPIC_ID,TEXT,USER_ID,USER_IP,DATA_POST) VALUES (@Nomer,'"+sMsg+"',"+sUserId+",'"+sIp+"',getdate());"
            + " DECLARE @Post int; SET @Post = SCOPE_IDENTITY();"
            + "UPDATE systems_Users SET AMOUNT_POST = AMOUNT_POST+1 WHERE ID = " + sUserId + "; "
            +"UPDATE systems_Forums SET AMOUNT_POST=AMOUNT_POST+1,LAST_TOPIC_ID = " + sTopicId + ",LAST_TOPIC_USER_ID=" + sUserId + ",LAST_TOPIC_OSER_NAME='" + sUserName + "' WHERE ID = " + sForumId + "; "
            + "UPDATE systems_Forums_Topic SET LAST_POST_ID=@Post,LAST_POST_USER_ID=" + sUserId + ",LAST_POST_USER_NAME='" + sUserName + "',LAST_POST_DATE=getdate(),AMOUNT_POST=1";
            string sConnected = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString();
            using (SqlConnection MySqlconect = new SqlConnection(sConnected))
            {
                SqlCommand MySqlComand = new SqlCommand(MySqlSelect, MySqlconect);
                MySqlconect.Open();
                MySqlComand.ExecuteNonQuery();
                
            }

И мне надо получить число, которое получает @Nomer

Это сообщение отредактировал(а) Gregoryy - 13.2.2008, 15:45
PM MAIL ICQ   Вверх
Gregoryy
Дата 13.2.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.10.2007

Репутация: 1
Всего: 1



Нашел ответ 
id = MySqlComand.ExecuteScalar().ToString();
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.