Я написал хранимую процедуру для получения идентификатора клиента с заданными данными.При выполнении вручную он возвращает значение, но не возвращает никакого значения из кода C #.
create procedure getCustomerID
@firstname CHAR(25),
@lastname CHAR(25),
@middlename as CHAR(25)=null,
@DOB datetime,
@CustomerState as CHAR(25)=null,
@CustomerNumber INTEGER,
@ID nvarchar(25) output
as
begin
....
...
set @ID='something'
end
USE [TestDB]
GO
declare @ID nvarchar(25)
EXECute [dbo].[getCustomerID]
'A', 'B','C','1963-09-06','', 12345, @ID out
print 'ID:'+@ID
GO
ВЫХОД
ID: CN0075
C #код:
try
{
using (SqlConnection conn = new SqlConnection("Connectionstring"))
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
using (var command = new SqlCommand("getCustomerID", conn)
{
CommandType = CommandType.StoredProcedure
})
{
command.Parameters.Add("@firstname", SqlDbType.Char, 25).Value = "A";
command.Parameters.Add("@lastname", SqlDbType.Char, 25).Value = "B";
command.Parameters.Add("@middlename", SqlDbType.Char, 25).Value = "C";
command.Parameters.Add("@CustomerState", SqlDbType.Char, 25).Value = "";
command.Parameters.Add("@DOB", SqlDbType.DateTime).Value = "1963-09-06";
command.Parameters.Add("@CustomerNumber", SqlDbType.Int).Value = "12345";
command.Parameters.Add("@ID", SqlDbType.NVarChar, 25).Direction =
ParameterDirection.Output;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string retunID = command.Parameters["@ID"].Value.ToString();
}
}
}
}
}
catch (Exception e)
{
Logger.Error(e.Message);
}
Это не исключение.Он выполняет хранимую процедуру и не заходит в цикл While(reader.read())
и не читает данные.