【发布时间】:2013-07-15 15:21:32
【问题描述】:
我有一个带有 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。
这里有什么问题?
【问题讨论】:
-
您使用的是 SQL Server 还是其他一些 RDBMS?该问题被标记为
sql-server,但我很困惑,因为我看到您使用的是OleDbParameter对象。如果您使用的是 SQL Server,那么您应该改用优化的SqlParameter对象。 -
是的,这是使用旧技术 OLe DB 的遗留代码
-
所以如果你想以任何顺序使用参数,那么你需要切换到比
OleDb更新的数据访问技术,但是如果你被OleDb卡住,那么你需要使顺序正确。 -
@KarlAnderson,我想知道你为什么不把这个作为答案。
标签: c# sql sql-server vb.net stored-procedures