SQL Server хранимая процедура для обновления записей - PullRequest
2 голосов
/ 03 января 2011

Я попытался создать хранимую процедуру, которая берет значения из моей программы и вставляет ее в определенные столбцы таблицы.Я получаю ошибку неправильного синтаксиса в хранимой процедуре, но не могу понять, почему?Код из программы:

            commandObj.CommandText = "sp_insert_profileDetails"

            commandObj.Parameters.Clear()

            Dim m_param As SqlParameter

            m_param = commandObj.Parameters.Add("@authorId", SqlDbType.NVarChar, 100)
            m_param.Direction = ParameterDirection.Input
            m_param.Value = foundProfiles.Item(i)


            m_param = commandObj.Parameters.Add("@age", SqlDbType.NVarChar, 50)
            m_param.Direction = ParameterDirection.Input
            m_param.Value = faceProfileAge.Item(i)

            m_param = commandObj.Parameters.Add("@gender", SqlDbType.NVarChar, 50)
            m_param.Direction = ParameterDirection.Input
            m_param.Value = faceProfileSex.Item(i)

            m_param = commandObj.Parameters.Add("@locale", SqlDbType.NVarChar, 50)
            m_param.Direction = ParameterDirection.Input
            m_param.Value = faceProfileLocation.Item(i)

            m_param = commandObj.Parameters.Add("@pic", SqlDbType.NVarChar, 100)
            m_param.Direction = ParameterDirection.Input
            m_param.Value = faceProfilePic.Item(i)

            Dim recordsAffected As Integer = commandObj.ExecuteNonQuery
            Return recordsAffected



ALTER procedure [dbo].[sp_insert_profileDetails]
@authorId nvarchar(100),
@age nvarchar(50),
@gender nvarchar(50),
@locale nvarchar(50),
@pic nvarchar(100)

AS 
  Begin
  set nocount on
  update [dbo].ProfileFeed
  set [age] = @age,
      [sex] = @gender,
      [locale] = @locale,
      [pic] = @pic
  where 
      [authorId] = @authorId
  end

Любая помощь приветствуется?

Ответы [ 2 ]

5 голосов
/ 03 января 2011

Я пропускаю несколько строк кода, чтобы быть уверенным, но ....

Вы указали, что commandObj.CommandType является System.Data.CommandType.StoredProcedure?

Если вы забудете установить это, .NET по умолчанию будет обрабатывать его как System.Data.CommandType.Text, и база данных выдаст ошибку неверного синтаксиса.

0 голосов
/ 03 января 2011

Я не вижу, где вы фактически вставляете какие-либо записи в базу данных.

Хранимая процедура сообщает:

  update [dbo].ProfileFeed
  set [age] = @age,
      [sex] = @gender,
      [locale] = @locale,
      [pic] = @pic
  where 
      [authorId] = @authorId
  end

И все же SP называется [dbo].[sp_insert_profileDetails]

Вы хотели написать "insert into [dbo].ProfileFeed" вместо "update"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...