動的パラメータ(パラメータ名がわからない)を使用してoracleおよびsqlサーバデータベースでストアドプロシージャを実行する方法があります。動的パラメータ名を使用して複数のデータベースでストアドプロシージャを実行
IDbCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
int i = 0;
foreach (string parameterName in names)
{
var param2 = cmd.CreateParameter();
param2.ParameterName = parameterName + "__" + i.ToString();
param2.DbType = DbType.String;
param2.Direction = ParameterDirection.Input;
param2.Value = parameterName;
cmd.Parameters.Add(param2);
i++;
}
cmd.CommandText = "spName";
このコードでは、Oracle上で動作しますが、SQL Serverが
プロシージャまたは関数 'pspNameは' パラメータ を期待スロー '@userID'、パラメータ名なので
を供給しませんでした私のコードでは '@userID'ではありません。 おかげ
まあ、パラメータ名は何ですか? – OldProgrammer
パラメータコレクションを作成するメソッドSqlCommandBuilder/OracleCommandBuilder 'DeriveParameters'を使用して目標に到達することができます。しかし、あなたはまだ家から遠いです。特定のSqlCommandBuilderまたはOracleCommandBuilderを作成する必要がある場合は、パラメータ値を設定する実行可能な方法を作成する必要があります。あなたが本当にこのすべての作業を行う準備ができているなら、基礎となるデータベースシステムからデータベースコードを抽象化するのに役立つORMを学ぼうとしないのはなぜですか? – Steve
@oldprogrammer名前に関係なく、sp defnitionでパラメータ名が同じであれば何も期待できません。 –