2017-01-07 1 views
1

私はそのパラメータがコレクションのSQLストアドプロシージャに見つかりませんでしたか?

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_HistoryInsertion`(
     IN p_MainID int 
     , IN p_DetailID int 
     , IN p_USERID int 
) 
    INSERT INTO history (`MainID`, `DetailID`,) 
    VALUES (p_MainID, p_DetailID);    

のような手順を格納している。しかし、私はエラーを取得すること

 Mysql_param[0] = new MySqlParameter("p_MainID", SqlDbType.Int); 
     Mysql_param[0].Value = Convert.ToInt32 (MID); 

     Mysql_param[1] = new MySqlParameter("p_DetailID", SqlDbType.Int); 
     Mysql_param[1].Value = Convert.ToInt32(DID); 

     Mysql_param[2] = new MySqlParameter("p_UserID ", SqlDbType.Int); 
     Mysql_param[2].Value = Convert.ToInt32(USERID== "" ? "0" : USERID); 

     MySqlDataAdapter da = new MySqlDataAdapter(pobj_cmd); 
      ds = new DataSet(); 
      da.Fill(ds); 

のようなパラメータがあります。

{"Parameter 'p_USERID' not found in the collection."}

実はp_USERは、後にある、データベース内の自動インクリメントです更新と削除と選択操作で使用されるので、すべてのプロシージャに渡さなければならないので、そのcity_idに関連する同じエラーもっとして6つのストアドプロシージャ

データ型は、列ごとにINTどこごとに存在している

答えて

1

私はあなたのコードに最初に気づいは、パラメータ名「CITY_ID」の後に余分なスペースがあるということです。あなたのパラメータ名は "CITY_ID"であると思います。

これで問題が解決するはずです。それでも問題が見える場合は、以下の解決策をご覧ください。

ストアドプロシージャにパラメータp_CMP_ID、p_BRC_ID、およびp_CITY_IDがあります。 しかし、コードごとに正しい名前 "p_CMP_ID"を持つパラメータを1つだけ作成しています。

他の2つのパラメータは、期待されるものとは異なる名前です。

パラメータ名「BRC_ID」を「p_BRC_ID」に変更し、「CITY_ID」を「p_CITY_ID」に変更すると問題が解決します。

おかげに関して、 チェタンRanpariya

BLOCKQUOTE

+0

問題が解決されるように、それは既に 'p_'と私はそれ –

+0

@AhsanBhattiを修正誤って行われているのですか? –

+0

はいこれはまた問題です 'pobj_cmd.Parameters.AddWithValue(MySQLParam [x] .ParameterName、MySQLParam [x] .Value); ' –

関連する問題