Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
-4 / 5 / 1
Регистрация: 06.01.2014
Сообщений: 67
1

Возврат из хранимой процедуры нескольких значений

22.04.2014, 01:14. Показов 2675. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста разобраться с тем, как из хранимой процедуры получить в С# несколько значений по одному столбцу.
Есть следующая процедура:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE PROCEDURE get_word_id_from_vocabulary (@SearchWord NVARCHAR(50), @CaseSensitive BIT, @WordID int output)
AS
 
BEGIN
   
IF @CaseSensitive=1
 
SELECT @WordID=WordSheet.WordID
FROM
  dbo.WordSheet
WHERE
  Word = @SearchWord COLLATE SQL_Latin1_General_CP1_CS_AS
ELSE 
  SELECT @WordID=WordSheet.WordID
  FROM
    dbo.WordSheet
  WHERE
    Word = @SearchWord COLLATE SQL_Latin1_General_CP1_CI_AS
      
  RETURN
END
Есть обрабатывающий код на С#, но он получает только одно значение (последнее/первое?), а надо получать все...
C#
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
SqlCommand cmd = new SqlCommand("get_word_id_from_vocabulary", cn);
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
 
                    //Передаю в качестве параметра строку - искомое слово
                    SqlParameter param = new SqlParameter();
                    param.ParameterName = "@SearchWord";
                    param.SqlDbType = System.Data.SqlDbType.NVarChar;
                    param.Value = Word;
                    param.Direction = System.Data.ParameterDirection.Input;
                    cmd.Parameters.Add(param);
 
                    //Передаю в качестве параметра bit - флаг чуствительность к регистру
                    SqlParameter param2 = new SqlParameter();
                    param2.ParameterName = "@CaseSensitive";
                    param2.SqlDbType = System.Data.SqlDbType.Bit;
                    param2.Value = (bool) CaseSensitive;
                    param2.Direction = System.Data.ParameterDirection.Input;
                    cmd.Parameters.Add(param2);
                    
                    //Выходной параметр int - WordID слова  Word в таблице WordSheet
                    SqlParameter param3 = new SqlParameter();
                    param3.ParameterName = "@WordID";
                    param3.SqlDbType = System.Data.SqlDbType.Int;
                    param3.Value = 0;
                    param3.Direction = System.Data.ParameterDirection.Output;
                    cmd.Parameters.Add(param3);
                    
                    cmd.ExecuteNonQuery();
 
                    exitcode = (int)cmd.Parameters["@WordID"].Value;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2014, 01:14
Ответы с готовыми решениями:

Обновление отчета при значениях учете значений хранимой процедуры
Есть БД, была создана хранимая процедура для отчета : USE GO /****** Object: ...

Возврат результата Хранимой процедуры
Всем привет! Нужна помощь, никак не соображу, как правильно сделать. Вероятнее всего что-то не...

Возврат значения из хранимой процедуры
В БД создал хранимую процедуру, которая возвращает ID вставленной записи. Процедура работает ALTER...

Возврат значения из хранимой процедуры
Помогите пожалуйста кто может... Как возвратить одно значение из хранимой процедуры ? При...

1
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
22.04.2014, 01:40 2
VKabanov, параметр @WordID имеет тип int, а значит может хранить только одно значение. Если тебе нужно возвращать несколько значений, то возвращай набор данных:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROCEDURE get_word_id_from_vocabulary (@SearchWord NVARCHAR(50), @CaseSensitive BIT)
AS
BEGIN
  
IF @CaseSensitive=1
    SELECT
        WordSheet.WordID
    FROM
        dbo.WordSheet
    WHERE
        Word = @SearchWord COLLATE SQL_Latin1_General_CP1_CS_AS
ELSE
    SELECT
        WordSheet.WordID
    FROM
        dbo.WordSheet
    WHERE
        Word = @SearchWord COLLATE SQL_Latin1_General_CP1_CI_AS
      
END
Затем читай их с помощью SqlDataReader'a
1
22.04.2014, 01:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2014, 01:40
Помогаю со студенческими работами здесь

Запрос в ASP (возврат данных из хранимой процедуры)
Задаю запрос, в котором вызывается проца и внутри нее выполняется какой-то апдейт и после этого...

Выборка данных из нескольких таблиц и с хранимой процедуры
здравствуйте! второй день шарю по форумах, гуглю, а толку нет :wall: у меня есть таблицы Car,...

Возврат нескольких значений из метода не знаем сколько таких значений
Здравствуйте! Собственно вопрос: как возвращать <несколько> значений из метода если заранее...

Возврат нескольких значений из функции
Здравствуйте, Подскажите пожалуйста, как можно передать из функции 2 результата, например, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru