Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在VB中,设置命令对象的参数似乎失败_Vb.net_Sql Server 2008_Ado.net_Parameter Passing - Fatal编程技术网

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

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

我使用以下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”需要参数“@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