C#如何使用自定义参数和sql主体调用"sp_executesql"



我正试图从C#执行一个动态SQL,我想使用sp_executesql,因为我想在传递给sp_executesql的动态SQL中传递一个用于IN语句的字符串列表。

问题是我不知道该怎么做。

到目前为止,我是这样做的:

using (var dbCommand = databaseConnection.CreateCommand())
{
dbCommand.CommandType = CommandType.StoredProcedure;
dbCommand.CommandText = "sp_executesql";
var sqlParam = dbCommand.CreateParameter();
sqlParam.DbType = DbType.String;
sqlParam.ParameterName = "stmt";
sqlParam.Value = sql.SQL;
dbCommand.Parameters.Add(sqlParam);
var incidentIdParam = dbCommand.CreateParameter();
incidentIdParam.ParameterName = "incidentId";
incidentIdParam.DbType = DbType.Int32;
incidentIdParam.Value = arguments.filterAttributes.incidentId;
dbCommand.Parameters.Add(incidentIdParam);
dbCommand.ExecuteReader();
}

有可能这样吗?

作为一个选项,您可以在客户端格式化SQL,并将其传递给存储过程就绪字符串。例如:

sql.SQL = "UPDATE ORDERS SET STATUS = 1 WHERE ID = %param%";

然后

sqlParam.Value = sql.SQL.Replace("%param%", arguments.filterAttributes.incidentId.ToString());

相关内容

  • 没有找到相关文章

最新更新