C# 具有2个参数的存储过程
我有一个存储过程,它接受3个参数:我们将它们分别称为C# 具有2个参数的存储过程,c#,sql,sql-server,vb.net,stored-procedures,C#,Sql,Sql Server,Vb.net,Stored Procedures,我有一个存储过程,它接受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 Ol
@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
这里怎么了 OleDB不支持命名参数:OleDB不支持命名参数:因此,如果您希望以任何顺序使用参数,则需要切换到比OleDB更新的数据访问技术,但如果您仍使用OleDB,则需要确保顺序正确
我认为普雷斯顿的答案足够了,但我已经发布了这个答案。如果您觉得它更有用,那么就接受它。因此,如果您想以任何顺序使用参数,那么您需要切换到比OleDb更新的数据访问技术,但是如果您仍然使用OleDb,那么您需要确保顺序正确
我认为普雷斯顿的答案足够了,但我已经发布了这个答案。如果您觉得它更有帮助,请接受它。您使用的是SQL Server还是其他RDBMS?问题被标记为
sql server
,但我感到困惑,因为我看到您正在使用OleDbParameter
对象。如果您使用的是SQL Server,那么您应该使用优化的SqlParameter
对象。是的,这是使用旧技术OLe DBSo的旧代码。如果您想以任何顺序使用这些参数,那么您需要切换到比OleDb
更新的数据访问技术,但是如果您一直使用OleDb
,则,那么你需要确保顺序正确。@KarlAnderson,我想知道你为什么不把这个作为答案。你是在使用SQL Server还是其他RDBMS?问题被标记为sql server
,但我感到困惑,因为我看到您正在使用OleDbParameter
对象。如果您使用的是SQL Server,那么您应该使用优化的SqlParameter
对象。是的,这是使用旧技术OLe DBSo的旧代码。如果您想以任何顺序使用这些参数,那么您需要切换到比OleDb
更新的数据访问技术,但是如果您一直使用OleDb
,则,然后你需要确保顺序正确。@KarlAnderson,我想知道你为什么不把这个作为答案。改用System.Data.SqlClient
命名空间对象(SqlConnection
,SqlCommand
和SqlParameter
)。OleDB是垃圾。OleDB
是20世纪90年代中期,而ADO.NET
是2002年的最新版本。是的,我目前的公司仍然坚持使用过时的垃圾代码。请改用System.Data.SqlClient
命名空间对象(SqlConnection
,SqlCommand
和SqlParameter
)。OleDB是垃圾。OleDB
是20世纪90年代中期,而ADO.NET
是2002年的最新版本。是的,我现在的公司仍然坚持使用过时的垃圾代码。