0

DataTable2 行 3 列のデータを入力しました。Oracleそのデータをテーブルに挿入したい。

どうすれば挿入できますか?例を教えてください。

また、

ORACLEでdatatableをstoredprocedureに渡すにはどうすればよいですか...

以下の方法でデータテーブルを渡しますが、データテーブル型の問題が発生しています。どうすればこれを解決できますか?

cmd.Parameters.Add("@Details",dtSupplier);   
(OR)  
cmd.Parameters.Add("Details", DbType.Single).Value = dtSupplier.ToString();
4

7 に答える 7

2

データセットまたはデータテーブルを ORACLE に挿入したい、

  1. ORACLE データ アダプタを作成します。
  2. 挿入用のコマンド オブジェクトを作成し、
  3. CommandType を StoredProcedure に設定します。
  4. データアダプタの更新コマンド、
  5. データセットまたはデータテーブルをパラメーターとして渡します。

このような:

OracleDataAdapter da = new OracleDataAdapter();
OracleCommand cmdOra = new OracleCommand(StoredProcedureName, Connection);
cmdOra.CommandType = CommandType.StoredProcedure;

da.InsertCommand = cmdOra;
da.Update(dsDataSet);

また

上記の場合、処理するよりもデータテーブルをxmlパラメーターとして渡すよりも機能しません

詳細については、次を確認してください: Oracle/SQL Server データベース ストアド プロシージャへの XML パラメータとしての ADO.NET DataTable

また

Oracle サイトでこのスレッドを確認してください:スレッド: データ テーブルを Oracle ストアド プロシージャに渡す

既存の回答を確認してください: C# のプロシージャへの入力としてデータ テーブルを渡すには?

于 2012-12-13T06:59:48.757 に答える
0

最良のアイデアは、以下の手順に従うことです

  1. トランザクションを作成する
  2. 取引を開始する
  3. データテーブルをループします
  4. あなたの手順を呼び出す
  5. エラーが発生しなかった場合は、トランザクションをコミットします
  6. そうでなければ、トランザクションをロールバックします
于 2012-12-13T06:55:31.487 に答える
0

あなたの質問のこの部分について:

cmd.Parameters.Add("@Details",dtSupplier);
(または)
cmd.Parameters.Add("詳細", DbType.Single).Value = dtSupplier.ToString();

「詳細」パラメータの型は何ですか? シングルですか?次に、DataTable から 1 つの値を選択し、dtSupplier.Rows[0]["col"] のようにパラメーターに渡す必要があります。
dtSupplier.ToString() を使用すると、DataTable 全体の文字列を作成するだけです (これは常に DataTable の型名になると思います)。

于 2012-12-13T06:58:34.880 に答える