Я пытаюсь извлечь одну часть данных из моей базы данных, используя хранимую процедуру, которая выглядит так.Почему код C# не возвращает значение из хранимой процедуры
USE [PSD]
GO
/****** Object: StoredProcedure [dbo].[ocso_GetNextDTEventNumber] Script Date: 1/19/2017 10:12:19 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ocso_GetNextDTEventNumber]
@EventNumber varchar(15) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--increment last number by 1
UPDATE LU_EVENT_NUMBERS SET evn_last_number = evn_last_number + 1 where evn_year = Year(GetDate())
--return event number to caller
--Get the next event number for all incidents
SELECT @EventNumber = evn_comp_formatted_next_num from LU_EVENT_NUMBERS where evn_year = Year(GetDate())
END
Я проверить эту процедуру, используя этот код SQL
DECLARE @NewEventNumber varchar(15)
Execute dbo.ocso_GetNextDTEventNumber
@EventNumber = @NewEventNumber OUTPUT;
Print convert(varchar(15),@NewEventNumber)
И я получаю результаты, которые я бы ожидать. Теперь, когда я пытаюсь получить результаты в моих C# код, который выглядит следующим образом:
public string GetEventNumber(string enumber)
{
string results;
SqlConnection _con = new SqlConnection();
_con.ConnectionString =
"Data Source=ops-devsql;" +
"Initial Catalog=PSD;" +
"User id=****;" +
"Password=****;";
_con.Open();
{
using (SqlCommand _cmd = new SqlCommand("ocso_GetNextDTEventNumber", _con))
{
_cmd.Parameters.Add("@NewEventNumber", SqlDbType.VarChar, 15)
.Direction = ParameterDirection.Output;
_cmd.ExecuteNonQuery();
results = _cmd.Parameters["@NewEventNumber"].Value.ToString();
//results = (string)_cmd.Parameters["@NewEventNumber"].Value.ToString();
return results;
}
}
}
Я получаю пустую строку обратно. Почему это не работает?
Ваш параметр является '@ EventNumber', а не' @ NewEventNumber' – Crowcoder
'_cmd.CommandType = CommandType.StoredProcedure'? –
Спасибо #Crowcoder, когда я изменил параметр на @EventNumber. Я получаю эту ошибку при запуске {«Процедура или функция« ocso_GetNextDTEventNumber »ожидает параметра« @EventNumber », который не был указан.»} – Perry