2014-03-15 4 views
0

Я хочу получить идентификатор проекта из моей таблицы проектов в SQL Server.Сохранение результата из хранимой процедуры в коде за

Я создал хранимую процедуру так:

create proc spFindProjectID 
    (@customerid int) 
as 
begin 
    select Project.pID 
    from Project 
    where [email protected] 
end 

Сейчас в моей C# я исполняю, что прок так:

public int findid(int id) 
{ 
     con = connect("igroup9_test1ConnectionString"); 
     using (SqlCommand sqlComm = new SqlCommand("[spFindProjectID]", con)) 
     { 
      if (con.State != ConnectionState.Open) 
      { 
       con.Open(); 
      } 

      try 
      { 
       sqlComm.CommandType = CommandType.StoredProcedure; 
       sqlComm.Parameters.AddWithValue("@customerid", id); 

       sqlComm.CommandTimeout = 600; 
       sqlComm.ExecuteNonQuery(); 
      } 
      catch (Exception ex) 
      { 
       throw (ex); 
      } 
      return 
     } 
    } 

Я хочу, чтобы сохранить результат от процедуры и вернуть его.

Как я могу это сделать?

ответ

2

Давайте посмотрим на документации для ExecuteNonQuery:

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является числом строк, затронутых командой. ... Для всех других типов операторов возвращаемое значение равно -1.

Вы вызываете хранимую процедуру, которая не является ни одним из трех перечисленных операторов.

Я полагаю, ваш

select Project.pID 
from Project 
where [email protected] 

запрос возвращает только одну ячейку, вы можете использовать SqlCommand.ExecuteScalar method, которая возвращает первый столбец первой строки в качестве object.

Например,

sqlComm.CommandType = CommandType.StoredProcedure; 
sqlComm.Parameters.AddWithValue("@customerid", id); 
int value = (int)sqlComm.ExecuteScalar(); 
return value; 
Смежные вопросы