2011-11-03 37 views
1

我用下面的VB代码到我的SQL服务器上执行标量函数:在VB中,设置命令对象的参数似乎无法

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'参数。 参数名称,顺序和类型与服务器上的完全相同。当在观察列表中观看cmd时,我可以看到4个参数被添加到它。 任何想法?

+0

试运行[SQL Server事件探查](http://msdn.microsoft.com/en-us/library/ms181091(v = SQL.100)的.aspx)跟踪和捕获** RPC:启动** EventClass以查看传递给存储过程的参数。 –

回答

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) 
0
cmd.CommandType = CommandTypes.StoredProcudure 
相关问题