我有一个方法应该使用动态参数在oracle和sql server数据库上运行存储过程(你不知道参数名称)。
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'。 感谢
答案 0 :(得分:1)
Oracle和SQL Server之间存在差异:
Oracle中的参数名称只能是名称,但对于SQL Server,您需要在参数名称前添加@
符号。
你需要在代码中的某个地方考虑这个问题。