我使用以下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个参数。 有什么想法吗?
答案 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