У меня есть простое приложение C#, которое использует Entity Framework 5.0
и должно вызывать хранимую процедуру с выходными параметрами. Проблема в том, что она не работает, и вместо этого она возвращает -1.Сохраненная процедура с выходными параметрами возвращает -1 в C#
c#
код, который у меня выглядит так:
// Define the output paramaters
SqlParameter operatorID = new SqlParameter("@operatorID", SqlDbType.Int);
operatorID.Direction = ParameterDirection.Output;
SqlParameter operatorCode = new SqlParameter("@operatorCode", SqlDbType.Int);
operatorCode.Direction = ParameterDirection.Output;
var parameters = new List<object>();
parameters.Add(operatorID);
parameters.Add(operatorCode);
var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID, @operatorCode", parameters.ToArray());
Хранимая процедура выглядит следующим образом:
CREATE PROCEDURE [dbo].[my_sp_name]
(
@operatorID int OUTPUT
,@operatorCode int OUTPUT
)
AS
SET @operatorID = 123
Я знаю, что это не имеет смысла, но это только для теста ,
Проблема после выполнения c#
кода является то, что значение noOutput
является -1, а значение operatorID
пусто, где я ожидаю, что это будет 123
.
Есть ли у кого-нибудь идеи, что я делаю неправильно?
О, мой БОГ, вы издеваетесь? Большое спасибо! Добавление 'OUTPUT' отлично работает, но я думал, что это необязательно, поскольку я уже определил их как выходные параметры. – Apostrofix
Вы должны написать OUTPUT. У меня такая же проблема в MSSQL в запросе с помощью ключевого слова OUTPUT –
Я сейчас понимаю. Я отвечу на ответ через 4 минуты. – Apostrofix