Как выполнить хранимую процедуру, которая имеет более одного outparameter в C # - PullRequest
1 голос
/ 26 сентября 2019
CREATE PROCEDURE Proc_SelectDetails
@id int,
@Name varchar(50) out,
@RollNo varchar(50) out  
AS 
BEGIN
      set @name = (select  from table where id= @id)
      set @RollNo  = (select  from table where id= @id)

End

Я не могу внести какие-либо изменения в sp. Я должен использовать этот sp, как он есть в моем коде C #.Если я пытаюсь вызвать sp с помощью Dataset. Получение набора данных пусто. Даже Datareader также становится пустым.Какой метод является правильным для вызова, так что я получу значение параметра вывода в C #.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

если вы используете 3-уровневую архитектуру, то в DAL (уровне доступа к данным) вы можете очень легко получить значения OUT, следуя коду.

public string selecteddetails (DOMAR SD)
    {
     DbCommand dbCommand = db.GetStoredProcCommand("Proc_SelectDetails");
     string out_name;
     string out_rollno;
     db.AddInParameter(dbCommand, "@id", DbType.Int32, SD.CaseID);
     db.AddOutParameter(dbCommand, "@NAME", DbType.String, 10);
     db.AddOutParameter(dbCommand, "@ROLLNO", DbType.String, 10);
     db.ExecuteNonQuery(dbCommand);
     out_name= (string)db.GetParameterValue(dbCommand, "@NAME");
 out_rollno= (string)db.GetParameterValue(dbCommand, "@ROLLNO");
     return out_name+out_rollno;
    }

Существует так много других методов, через которые вы можете получить значения.единственное, что вам нужно - это объявить @ name, @ rollno в коде C #.

Если вам нравится мой код, нажмите, как ... если вы хотите, чтобы другой код сообщал мне, я отправлю вам другой.

1 голос
/ 26 сентября 2019

просто создайте соединение, введите команду и добавьте необходимые параметры - например:

         using (var connection = new SqlConnection(@"connection string..."))
         {
            connection.Open();
            var command = new SqlCommand("Proc_SelectDetails", connection);
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.Add("id", SqlDbType.Int);
            command.Parameters["id"].Value = 234;

            var name = command.Parameters.Add("Name", SqlDbType.VarChar, 50);
            name.Direction = ParameterDirection.Output;

            var rollNo = command.Parameters.Add("RollNo", SqlDbType.VarChar, 50);
            rollNo.Direction = ParameterDirection.Output;

            command.ExecuteNonQuery();

            Console.WriteLine(name.Value);
            Console.WriteLine(rollNo.Value);

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...