powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Извлечь выходные параметры из хранимки.
12 сообщений из 12, страница 1 из 1
Извлечь выходные параметры из хранимки.
    #34314385
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здаров.

Очень простая хранимка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE dbo.AVTORIZATION
@login varchar( 20 ),
@name varchar( 50 ) OUTPUT,
@id tinyint OUTPUT
AS
BEGIN
 SELECT @id = U.ID, @name = U.Name FROM Users U WHERE U.Login = @login;
END

Пытаемся получить возвращаемые значения

Код: 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.
            SqlCommand SQL = new SqlCommand("dbo.AVTORIZATION", Cn);
            SqlParameter prm = new SqlParameter();

            SQL.CommandType = CommandType.StoredProcedure;
            prm.ParameterName = "@login";
            prm.SqlDbType = SqlDbType.VarChar;
            prm.Direction = ParameterDirection.Input;
            prm.Value = Login;
            SQL.Parameters.Add(prm);

            SqlParameter prmName = new SqlParameter();
            prmName.ParameterName = "@name";
            prmName.SqlDbType = SqlDbType.VarChar;
            prmName.Size = 50;
            prmName.Direction = ParameterDirection.Output;
            SQL.Parameters.Add(prmName);

            SqlParameter prmID = new SqlParameter();
            prmID.ParameterName = "@id";
            prmID.SqlDbType = SqlDbType.TinyInt;
            prmID.Direction = ParameterDirection.Output;
            SQL.Parameters.Add(prmID);

            SQL.ExecuteNonQuery();
                        
            Program.User = (string)prmName.Value;
            Program.ID = (int)prmID.Value;// Здесь затык типа Specified cast is not valid. Если ID определять как object, то всё пучком.

Чего не так делаю?
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34314423
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и делай object, раз всё пучком.) Но попробуй вместо int поставить Byte. Вдруг получиться....
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34315679
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
prmID.SqlDbType = SqlDbType.TinyInt;
SqlDbType.TinyInt не приводится к int
либо SqlDbType.Int либо Convert.ToInt32(prmID.Value)
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34317045
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR
Код: plaintext
prmID.SqlDbType = SqlDbType.TinyInt;
SqlDbType.TinyInt не приводится к int
либо SqlDbType.Int либо Convert.ToInt32(prmID.Value)
Эт верно, он переводиться в Byte.
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34317126
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbitЭт верно, он переводиться в Byte.
Эт верно, значится в таблице соответствия ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.SQL.v2005.en/denet9/html/89b43ee9-b9ad-4281-a4bf-c7c8d116daa2.htm

goodbitНо попробуй вместо int поставить Byte. Вдруг получиться....
неа, не получаецца... Cannot convert type 'System.Data.SqlClient.SqlParameter' to 'byte'
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34317327
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, спасиб. Вдогонку - можно как-то проверить, вернула процедура запись или нет?
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34317526
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так ведь ExecuteNonQuery()
чтобы что-то вернулось - ExecuteReader(), затем SqlDataReader.HasRows
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34317549
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, только значения параметров в таком случае нужно смотреть после закрытия SqlDataReader'а, т.е.
reader.Close();
Program.User = (string)prmName.Value;
Program.ID = (int)prmID.Value;

такое вот "оно" загадочное (ado) :)
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34320451
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не, узнать не значение записи, а само её существование.
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34321162
Фотография goodbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос с "...count(*)..." На клиенте - "int num = (int)command.ExecuteScalar()"
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34321732
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А count зачем? Мне-то надо узнать, есть ли что в SQLParameter или нет.
...
Рейтинг: 0 / 0
Извлечь выходные параметры из хранимки.
    #34331767
parovoZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, проблему решил так

Код: plaintext
1.
2.
3.
4.
if (prmName.Value != System.DBNull.Value)
            {
                Program.User = (string)prmName.Value;
            }
            else return false;

Нужен тут try, аль не нужен - ХЗ.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Извлечь выходные параметры из хранимки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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