1

У меня есть простое приложение 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.

Есть ли у кого-нибудь идеи, что я делаю неправильно?

ответ

4

Ваши параметры в запросе должны быть с OUTPUT ключевое слово

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID OUTPUT, @operatorCode OUTPUT", parameters.ToArray()); 
+0

О, мой БОГ, вы издеваетесь? Большое спасибо! Добавление 'OUTPUT' отлично работает, но я думал, что это необязательно, поскольку я уже определил их как выходные параметры. – Apostrofix

+1

Вы должны написать OUTPUT. У меня такая же проблема в MSSQL в запросе с помощью ключевого слова OUTPUT –

+0

Я сейчас понимаю. Я отвечу на ответ через 4 минуты. – Apostrofix

0

Проверить "operatorCode.Value" свойство . результат будет после выполнения.

Если вы не пытаетесь использовать команду CommandType.StoredProcedure , а затем выполните команду с именем процедуры хранения вместе с параметрами. вы получите результат

Смежные вопросы