2011-01-03 4 views
2

내 프로그램에서 값을 가져 와서 테이블의 특정 열에 삽입하는 저장 프로 시저를 만들려고했습니다. 저장 프로 시저에서 잘못된 구문 오류가 계속 발생하지만 그 이유를 파악할 수 없습니까? 프로그램 코드 :레코드를 업데이트하는 SQL Server 저장 프로 시저

  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

귀하의 문제와 관련이 없지만 Sprocs에 sp_ 접두어를 붙이면 MS에 의해 권장되지 않습니다. http://msdn.microsoft.com/en-us/library/ms190669.aspx –

+1

정확히 무엇을하고 있는지 알지 못하는 까다로운 요령 그리고 왜, 당신은 정말로 당신의 프로 시저 앞에 "sp_"를 붙이는 것을 원하지 않습니다. SQL은 모든 sp_ 프로 시저에 대해 몇 가지 추가 처리를 수행하며 이로 인해 시간이 지날수록 문제가 발생할 수 있습니다. (자세한 설명은 BOL에서 찾을 수 있습니다.) –

답변

5

나는

당신은 commandObj.CommandType이 System.Data.CommandType.StoredProcedure로 지정나요 .... 확인하기 위해 몇 줄의 코드 누락,하지만거야? 이 설정하는 것을 잊지 경우

, .NET은 기본적으로 System.Data.CommandType.Text로 취급하고 데이터베이스가 잘못된 구문 오류가 발생합니다 ..

+0

나는 그것을하기 위해하는 것을 잊었다, 그것을 다시 시험해 게해라. .. thanks..will post – vbNewbie

+0

나의 기쁨. 기꺼이 도움이 될 것입니다. – David

0

을 당신이 어디에 표시되지 않습니다 실제로 레코드를 데이터베이스에 삽입합니다.

저장 프로 시저 상태 : 아직 SP가

하셨습니까 [dbo].[sp_insert_profileDetails]라는

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

는 " insert into [dbo].ProfileFeed"대신 " update"의 작성?

+0

새 레코드를 추가하려고하지 않고 기존 레코드 열을 업데이트하려고합니다. 따라서 authorId가 일치하는 곳에서 해당 열을 업데이트해야합니다. – vbNewbie