2011-04-18 35 views
0

ネットで多く検索されましたが、何も見つかりませんでした。 oracle table.i ahev 2 column.1にレコードを挿入していますが、他はintです。 私のコードは次のとおりです。idが1のとき、それはfine.when IDを作品 c#oracledbtype.int16 int16の値が大きすぎるか小さすぎますが、値は1または2です。

   Oracle.DataAccess.Client.OracleParameter param1 = new Oracle.DataAccess.Client.OracleParameter(); 
       param1.Direction = ParameterDirection.Input; 
       param1.ParameterName = "INCONTENT"; 
       param1.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Long; 
       param1.Value = dt.Rows[i]["Content"].ToString(); 

       //System.Data.OracleClient.OracleParameter param2 = new System.Data.OracleClient.OracleParameter(); 
       Oracle.DataAccess.Client.OracleParameter param2 = new Oracle.DataAccess.Client.OracleParameter(); 
       param2.Direction = ParameterDirection.Input; 
       param2.ParameterName = "INID"; 
       param2.OracleDbType = OracleDbType.int16; 
       //param2.Value = 7; 
       param2.Value = dt.Rows[i]["ID"]; 


       oracom.Parameters.Add(param1); 
       oracom.Parameters.Add(param2); 


       oracom.ExecuteNonQuery(); 

が1以上である、それは価値などのエラー、ストアドプロシージャのデータ型はint型int16.Columnデータ型に対して大きすぎたり小さすぎているのいずれかを与えますまたint。 助けてください

答えて

0

Oracleのintはどれくらいの大きさですか?

Int16は.NETで32,767、intInt32の別名で、32ビットと2,147,483,648です。

var i = 1;と書くと、変数iInt32です。

Int32Int16に送信している可能性があります。このプロバイダはおそらく処理できません。それとも、実際にそれがスローすることができます。

Oracleのintが32ビットの場合は、値をInt16にキャストするか、データ型をOracleDbType.Int32に変更してください。

+0

お返事ありがとうございます。私が 'oracom.Parameters.Clear();' – grishma

+0

クエリを実行する前に 'Parameters'コレクションをクリアしますか?基本的にはパラメータを削除し、ほとんどのコードを不要にします。私はあなたが何をしたのか分かりません。 –

+0

クエリの実行後にNO.iが削除されました。 – grishma

関連する問題