Vb.net 在VB中,设置命令对象的参数似乎失败
我使用以下VB代码在sql server上执行标量函数:Vb.net 在VB中,设置命令对象的参数似乎失败,vb.net,sql-server-2008,ado.net,parameter-passing,Vb.net,Sql Server 2008,Ado.net,Parameter Passing,我使用以下VB代码在sql server上执行标量函数: cmd.CommandText = "[STFRA].[dbo].MyScalarFunc" cmd.Parameters.Add("@Fastener", SqlDbType.Int) cmd.Parameters("@Fastener").Value = 4148 cmd.Parameters.Add("@Thickness", SqlDbType.Float) cmd
cmd.CommandText = "[STFRA].[dbo].MyScalarFunc"
cmd.Parameters.Add("@Fastener", SqlDbType.Int)
cmd.Parameters("@Fastener").Value = 4148
cmd.Parameters.Add("@Thickness", SqlDbType.Float)
cmd.Parameters("@Thickness").Value = 3.2
cmd.Parameters.Add("@Material", SqlDbType.VarChar, 10)
cmd.Parameters("@Material").Value = a
cmd.Parameters.Add("@Shear", SqlDbType.VarChar, 2)
cmd.Parameters("@Shear").Value = 1
Dim retObj As Object = cmd.ExecuteScalar(cmd)
我得到的错误消息是:过程或函数“MyScalarFunc”需要参数“@firsture”-参数,但未提供该参数。
参数名称、顺序和类型与服务器上的完全相同。当在观察列表中观察cmd时,我可以看到它附加了4个参数。
有什么想法吗?我已经有一段时间没有这样做了,但是您确定需要在VB中的参数名中添加@符号吗?这是一种SQL Server语法。只要做:
cmd.CommandText = "[STFRA].[dbo].MyScalarFunc"
cmd.Parameters.Add("Fastener", SqlDbType.Int)
cmd.Parameters("Fastener").Value = 4148
cmd.Parameters.Add("Thickness", SqlDbType.Float)
cmd.Parameters("Thickness").Value = 3.2
cmd.Parameters.Add("Material", SqlDbType.VarChar, 10)
cmd.Parameters("Material").Value = a
cmd.Parameters.Add("Shear", SqlDbType.VarChar, 2)
cmd.Parameters("Shear").Value = 1
Dim retObj As Object = cmd.ExecuteScalar(cmd)
尝试运行跟踪并捕获RPC:Starting EventClass,以查看传递给存储过程的参数。
cmd.CommandType = CommandTypes.StoredProcudure