Вызов Хранимой Процедуры C# Mssql

24.09.2013
1
0
#1
Простенькая задача, но никак не могу решить.
Код из БД:

CREATE PROCEDURE get_role
@login varchar (20),
@password varchar (32),
@role int output
AS
SET NOCOUNT ON
DECLARE @answer varchar (20)

set @role = (
select users._role
from users
where users._name = @login AND users._password = @password);

;

Часть кода из C# :
//...
SqlConnection conn = new SqlConnection(connStr);
try
{
//пробуем подключиться
conn.Open();
}
catch (SqlException se)
{
label3.Text = "Ошибка подключения к БД";
return;
}
//...
using (SqlCommand cm1 = new SqlCommand("get_role", conn))
{
cm1.CommandType = CommandType.StoredProcedure;
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@login";
param1.Direction = ParameterDirection.Input;
param1.SqlDbType = SqlDbType.Text;
param1.Value = textBox1.Text;
param1.Size = 20;
cm1.Parameters.Add(param1);

param1 = new SqlParameter();
param1.ParameterName = "@password";
param1.Direction = ParameterDirection.Input;
param1.SqlDbType = SqlDbType.Text;
param1.Size = 32;
param1.Value = hash;
cm1.Parameters.Add(param1);

param1 = new SqlParameter();
param1.ParameterName = "@role";
param1.Direction = ParameterDirection.Output;
param1.SqlDbType = SqlDbType.SmallInt;
cm1.Parameters.Add(param1);

try
{
cm1.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException se)
{
label3.Text = "Данная функция временно не работает, обратитесь к сист. администратору.";
conn.Close();
return;//не найдена процедура
}
catch (System.InvalidOperationException se) //Текущее состояние подключения закрыто.
{
label3.Text = "Потеряно соединение с БД";
conn.Close();
return;
}
...
Вопрос вроде простой, но: Как получить значение, которое в cm1.Parameters["@roleЭ] ??? Никак не смог найти. :(

Добавлено: Вопрос снят, ответ:
int x = (int)cm1.Parameters["@role"].Value;