2017-11-10 3 views
0

stored procedure에 sql에서 최근 업데이트 된 행의 ID 목록을 반환합니다. 배열이나 목록으로 어떻게 얻을 수 있습니까?저장 프로 시저의 출력 가져 오기

는 저장 프로 시저 :

CREATE procedure [dbo].[spUpdateResolutionStatus] 
@SummaryId int, 
@AlertType varchar(500), 
@AlertServer varchar(250), 
@Subject varchar(250) 
as 
Begin 
declare @insertedIds table (id int) 
    Update WCFLogs set ResolutionSummary_OID = @SummaryId, Status_oid = 2 
    output inserted.log_oid into @insertedIds 
where [email protected] and AlertServer= @AlertServer and Log_Subject = @Subject; 
select id from @insertedIds 
end 
GO 

내 방법 :

public int[] UpdateIssueResolutionStatus(Int32 summaryId, string alerttype, string alertserver, string subject) 
{ 
    int[] rowseffected; 
    string cs = ConfigurationManager.ConnectionStrings["LogsData"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     SqlCommand cmd = new SqlCommand("spUpdateResolutionStatus", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add(new SqlParameter("@SummaryId", summaryId)); 
     cmd.Parameters.Add(new SqlParameter("@AlertType", alerttype)); 
     cmd.Parameters.Add(new SqlParameter("@AlertServer", alertserver)); 
     cmd.Parameters.Add(new SqlParameter("@Subject", subject)); 
     con.Open(); 
     rowseffected =(Int)cmd.ExecuteScalar(); 
    } 
    return rowseffected; 
} 

ExecuteScalar 내가 전체 목록을 얻을 수있는 방법, 나에게 첫 번째 행의 ID를 제공?

+0

결과로 DataTable을 채울 수 있습니다. 'SqlCommand'에서 다른'.Execute ...'를 사용할 수 있습니다. –

+2

중복이 너무 많습니다. 질문이 이미 제기되었습니다. 게시 솔루션을 게시하기 전에 Google은 귀하의 친구입니다 – GGO

+0

@ GGO - Bing은 최고의 튀김입니다;) –

답변

3
public int[] UpdateIssueResolutionStatus(Int32 summaryId, string alerttype, string alertserver, string subject) 
{ 
    int[] rowseffected; 
    string cs = ConfigurationManager.ConnectionStrings["LogsData"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     SqlCommand cmd = new SqlCommand("spUpdateResolutionStatus", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add(new SqlParameter("@SummaryId", summaryId)); 
     cmd.Parameters.Add(new SqlParameter("@AlertType", alerttype)); 
     cmd.Parameters.Add(new SqlParameter("@AlertServer", alertserver)); 
     cmd.Parameters.Add(new SqlParameter("@Subject", subject)); 
     con.Open(); 

     using (IDataReader reader = cmd.ExecuteReader()) 
     { 
      List<int> ids = new List<int>(); 
      while (reader.Read()) 
      { 
       ids.Add(reader.GetInt32(0)); 
      } 

      return ids.ToArray(); 
     } 
    } 
} 
관련 문제