@AlexPooleはそれがテーブル値パラメーターを使用するのが最善である指摘したように。
type t_varchar_tab is table of varchar2(10) index by pls_integer;
procedure insert_table(i_id_tab in t_varchar_tab);
体:
procedure insert_table(i_id_tab in t_varchar_tab) is
begin
-- if You have temporary table You do not want commits here
forall i in i_id_tab.first .. i_id_tab.last
insert into MY_SCHEMA.MY_TABLE
VALUES (i_id_tab(i));
end ins_test;
のC#:
using (OracleCommand dbCommand = connection.CreateCommand())
{
dbCommand.CommandText = "MY_SCHEMA.MY_PACKAGE.insert_table";
dbCommand.CommandType = CommandType.StoredProcedure;
var inputArray = new OracleParameter
{
Direction = ParameterDirection.Input,
CollectionType = OracleCollectionType.PLSQLAssociativeArray,
Value = StringList.ToArray()
};
dbCommand.Parameters.Add(inputArray);
await dbCommand.ExecuteNonQueryAsync();
おかげでアレックス!
クエリ(111111など)で使用しているコードの一覧はどこですか?別のテーブル、ファイル、ユーザー入力、...? –
良い点は、質問に追加されました。私はコマンドパラメータが合理的な方法だと思います。 – user2029276
これらはアプリケーションでどのように保持され、どの言語/接続タイプを使用していますか?値の配列を渡してコレクションとして扱えるようにすることができます。 –