在VB中,设置命令对象的参数似乎失败了

时间:2011-11-03 10:38:30

标签: 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.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'需要参数'@Fastener'-Parameter,这是未提供的。 参数名称,顺序和类型与服务器上的完全相同。在观察列表中观看cmd时,我可以看到附加了4个参数。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我有一段时间没有这样做,但你确定需要在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) 

答案 1 :(得分:0)

cmd.CommandType = CommandTypes.StoredProcudure