2016-07-24 9 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文をsql profillerから確認して、エラーの原因となるパラメータ値を知ることができます。パラメータ値はifに基づいています。 Debbに書き込んでください.dp2.fillの後にパラメータの値を書き込んでください –

答えて

0

  1. は、各パラメータを持っているものの値を確認してくださいとSQL Server Management Studioでデータベースに対して直接同じクエリを実行します。

    • チェックあなたは適切にあなたも簡素化し、あなたのコードがより明確にしようとすることができ、一般的には

(それがコードからはっきりしていない)データセットからの結果を使用している場合返されたブロックとif (rbsearchradios.SelectedIndex == 0)を最初に移動することはできますが、SPが単一の値しか返さない場合は

  • を壊すことは意味がありません。ExecuteScalar()メソッドを使用すると、より高速で簡単です。
  • 関連する問題