1

我有一个带有 3 个参数的存储过程:让我们调用它们@a,@b,@c,它们都是可选的。

在存储过程中,它们是按以下顺序定义的:@a,@b,@c

根据我到目前为止的研究,从.NET 代码中,我应该能够以任何顺序调用它们:

例如:

.Add(New OleDbParameter("@c", OleDbType.Integer, 4, ParameterDirection.Input, False, 0, 0, "c", DataRowVersion.Current, c))

.Add(New OleDbParameter("@a", OleDbType.Integer, 4, ParameterDirection.Input, False, 0, 0, "a", DataRowVersion.Current, a))

但是当我这样做时,存储过程仍然认为传递的第一个值是a,第二个值是c。

这里有什么问题?

4

2 回答 2

5

OleDB 不支持命名参数:http: //msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx

于 2013-07-15T15:24:17.280 回答
1

所以如果你想以任何顺序使用参数,那么你需要切换到比 OleDb 更新的数据访问技术,但是如果你被 OleDb 卡住,那么你需要使顺序正确。

我认为普雷斯顿的回答就足够了,但我已经发布了这个答案。如果你觉得它更有帮助,那就接受它。

于 2013-07-15T15:47:54.243 回答