2016-07-24 2 views
0
SqlConnection conn = getConnection(); 
SqlCommand cmd = new SqlCommand(); 

cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "SP_PSLA_SEARCH"; //The stored procedure gets added 
cmd.CommandTimeout = 0; 
cmd.Connection = conn; 

// Start adding the parameters of the stored procedure 
cmd.Parameters.AddWithValue("@usrnm", thisUser.Username); 

int constit = 0; 

if (thisUser.Constituencies.Count > 0) 
{ 
    foreach (KeyValuePair<int, string> kp in thisUser.Constituencies) 
    { 
     if (kp.Value == ddlConstituency.SelectedValue.ToString()) 
     { 
      constit = kp.Key; 
      break; 
     } 
    } 
} 

cmd.Parameters.AddWithValue("@cnstncy", constit); 

string pdval = null; 
int valtype = 0; 

if (rbsearchradios.SelectedIndex == 0) 
{ 
    try 
    { 
     pdval = searchVal; 
     cmd.Parameters.AddWithValue("@Search", DBNull.Value); 
     cmd.Parameters.AddWithValue("@pd", int.Parse(pdval)); 
     cmd.Parameters.AddWithValue("@type", valtype); 
    } 
    catch 
    { 
     System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "stop", "alert('Invalid PD Number Supplied! Please Provide A Valid Submission.');", true); 
     return; 
    } 
} 
else 
{ 
    valtype = 1; 
    cmd.Parameters.AddWithValue("@Search", searchVal); 
    cmd.Parameters.AddWithValue("@pd", DBNull.Value); 
    cmd.Parameters.AddWithValue("@type", valtype); 
} 

cmd.Parameters.AddWithValue("@app", 1); 

conn.Open();       

// Creates Dataadapter for execution 
SqlDataAdapter dp2 = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 

dp2.Fill(ds, "name"); 

저장 프로 시저의 인수를 시도하고이 저장 프로 시저를 실행하고이 결과를 데이터 집합으로 가져 오지만 아무 것도 얻지 못합니다. 말 그대로. 예외가 없으며 저장 프로 시저의 결과가 없습니다.이것이 실행될 때 결과를 반환하지 않는 이유는 무엇입니까?

이 저장 프로 시저입니다 :

DECLARE @return_value int 

EXEC @return_value = [dbo].[SP_PSLA_SEARCH] 
      @usrnm = N'tstone', 
      @cnstncy = 55, 
      @Search = N'primary', 
      @pd = NULL, 
      @type = 1, 
      @app = 1 

SELECT 'Return Value' = @return_value 
GO 
+0

개체를 내부에서 외부로 확인하십시오. 당신은 USP에 전화하고 있지만 어쨌든 작동합니까? 사용 된 술어에 일치 항목이 없으면 결과가 나타나지 않고 오류가 게시되지 않습니다. 일치하는 행이 없습니다. –

+0

sql profiller에서 보낸 sql 문을 검토하여 오류가있는 위치를 잡을 수있는 매개 변수 값을 알 수 있습니다. 매개 변수 값은 if를 기반으로합니다. Debg로 시도하십시오 .dp2.fill 후에 매개 변수 값을 입력하십시오. –

답변

0

이 문제를 해결하려면 다음

  1. 것은 반드시 어떤 값을 각 매개 변수가 확인 및 SQL Server Management Studio의 데이터베이스에 대해 직접 동일한 쿼리를 실행합니다.

    • 을 :
    • 확인 제대로 당신은 또한 단순화하고 코드를 더욱 명확하게하기 위해 시도 할 수 있습니다, 일반적으로

(는 코드에서 분명하지 않다) 데이터 세트에서 결과를 사용하는 경우 블록 반환 및 if (rbsearchradios.SelectedIndex == 0) 처음 이동할 수 있습니다. SP 값이 하나만 반환되면

  • 을 생성하는 것은 의미가 없으므로 ExecuteScalar() 메서드를 사용할 수 있습니다.이 메서드는 더 빠르고 직관적입니다.
  • 관련 문제