Asp.net 过程或函数“过程名称”需要未提供的参数“Param name”,这种情况很少发生
我在VB.NET中有一个web服务函数,它将参数发送到SQL Server存储过程 在部署的机器中,每件事都能完美工作两个月 但是现在错误来了 过程或函数GetEmployeeDetails需要一个未提供的参数@Progress' 在部署的计算机上仅发生一次 错误发生前后,一切正常 Web服务代码:Asp.net 过程或函数“过程名称”需要未提供的参数“Param name”,这种情况很少发生,asp.net,sql,sql-server,vb.net,stored-procedures,Asp.net,Sql,Sql Server,Vb.net,Stored Procedures,我在VB.NET中有一个web服务函数,它将参数发送到SQL Server存储过程 在部署的机器中,每件事都能完美工作两个月 但是现在错误来了 过程或函数GetEmployeeDetails需要一个未提供的参数@Progress' 在部署的计算机上仅发生一次 错误发生前后,一切正常 Web服务代码: Public Function GetLocation(ByVal oldNumber As Integer, ByVal NewNumber As Integer, ByVal Location
Public Function GetLocation(ByVal oldNumber As Integer, ByVal NewNumber As Integer, ByVal Location As String,ByVal Progress As String, ByVal Name As String, ByVal ID As String) As String
Try
Command1 = New SqlCommand("GetEmployeeDetails", connection1)
With Command1
.CommandType = CommandType.StoredProcedure
.Parameters.Add("@oldNumber", SqlDbType.Int).Value = oldNumber
.Parameters.Add("@NewNumber", SqlDbType.Int).Value = NewNumber
.Parameters.Add("@Location", SqlDbType.VarChar, 10).Value = Location
.Parameters.Add("@Progress", SqlDbType.Char, 10).Value = IIf(Progress = "", System.DBNull.Value, Progress)
.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = Name
.Parameters.Add("@ID", SqlDbType.VarChar, 50).Value = ID
.Connection.Open()
.ExecuteNonQuery()
.Connection.Close()
End With
存储过程参数:
ALTER PROCEDURE GetEmployeeDetails
(
@oldNumber AS INTEGER,
@NewNumber AS INTEGER,
@Location AS VARCHAR(10),
@Progress AS CHAR(1),
@Name AS VARCHAR(50),
@ID AS VARCHAR(50)
)
As
我只是想知道,当所有参数都正确传递时,为什么会发生错误?因为您在sql中将参数声明为CHAR1,但在Vb.net中使用时与Char10类似 试试这个
ALTER PROCEDURE GetEmployeeDetails
(
@oldNumber AS INTEGER,
@NewNumber AS INTEGER,
@Location AS VARCHAR(10),
@Progress AS CHAR(10),
@Name AS VARCHAR(50),
@ID AS VARCHAR(50)
)
As
是否可以尝试向@Progress传递DBNull.Value以外的其他内容?如果该值为空,您可以只传入*或其他内容吗?如果未提供给定参数的值,则可能会发生此错误参数,例如,如果您的源值恰好为null或emptymarc\s,那么我传递DBNULL.value是否错误,但它始终正常工作。不确定它是否真的是@Progress参数-但我怀疑其中一个参数被设置为null或empty,因此存储过程会认为它没有得到值…是@Progress CHAR1还是CHAR10?它是是Char1,但在VB.NET中用作char10,这会使错误很少发生。Char声明真的有很大的不同。因为当我们将10个字符传递给声明为Char1的Sql变量时,它将截断除第一个字符以外的字符。