В VB установка параметров объекта команды, кажется, терпит неудачу - PullRequest
1 голос
/ 03 ноября 2011

Я использую следующий код VB для выполнения скалярной функции на моем сервере sql:

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 параметра. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012
cmd.CommandType = CommandTypes.StoredProcudure
0 голосов
/ 04 ноября 2011

Я давно этого не делал, но вы уверены, что вам нужно добавить символы @ к именам параметров в 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) 
...