2014-03-28 2 views
0

잠시 후 db를 다루는 데 돌아가고 이상한 오류가 발생했습니다.SQL Server에서 저장 프로 시저로 레코드 업데이트

구문이 어떻게 보이는지 확인하고 올바르게 보입니다.

CREATE PROCEDURE [dbo].[UpdateLanguageToInterpreter] 
    @interpreterId varchar(128), 
    @languageId int, 
    @isSignLanguage bit, 
    @prof_level int 
AS 
    insert into [dbo].[Interpreter_Language_List] 
     ([isSignLang], [prof_level_id]) 
    VALUES(@isSignLanguage, @prof_level) 
    WHERE 
      [IntrepeterId] = @interpreterId 
      and [LanguageId] = @languageId 

    RETURN 1 

당신이 어떤 아이디어를 가지고 있나요 :

은 내가이 저장 프로 시저를 만들려고 할 때 어디

오류 근처

잘못된 구문을 얻을?

+1

을하는 데 도움이주의하는 STOR의 기본 RETURN 값 오류없이 실행 한 ed 프로 시저는 0입니다. 0이 아닌 값은 오류를 나타냅니다. –

답변

3

INSERT ... VALUES에는 WHERE 절이 없습니다.

0

삽입하기 전에 @interpreterId 및 @languageId 매개 변수를 삽입하거나 유효성을 검사 하시겠습니까? 이전의 경우 필드와 매개 변수를 삽입에 추가하고 where 절을 제거하기 만하면 그렇지 않습니다. SPROC를 호출하기 전에 유효성 검사를 수행하십시오. 또는 삽입하기 전에 select 문을 수행하고 유효성을 검사하고 프로 시저 삽입 또는 반환/종료를 결정할 수 있습니다.

0

제목에 업데이트 기록이 있습니다. 당신이 절차를 사용하여 레코드를 업데이트 할 경우, 당신은이를 사용할 수 있습니다

CREATE PROCEDURE [dbo].[cusp_CustomerUpdate] 
(
    @interpreterId varchar(128), 
    @languageId int, 
    @isSignLanguage bit, 
    @prof_level int 
) 
AS 
BEGIN 
SET NOCOUNT OFF; 
UPDATE [dbo].[Interpreter_Language_List] 
SET  
[isSignLang][email protected], 
[prof_level_id][email protected]_level 

WHERE 
[IntrepeterId] = @interpreterId AND 
[LanguageId] = @languageId 
END 
GO 

당신이 중 하나 VALUES 후이 같은 누락에 삽입을 사용하려면 :

SET 
    [IntrepeterId] = @interpreterId 
    [LanguageId] = @languageId 

SELECT 
    [isSignLang][email protected], 
    [prof_level_id][email protected]_level 
FROM [dbo].[Interpreter_Language_List] 
WHERE 
    [IntrepeterId] = @interpreterId AND 
    [LanguageId] = @languageId 
    END 
    GO 

을 어느 당신이 필요 WHERE 절을 제거 :

INSERT INTO [dbo].[Interpreter_Language_List] 
     ([IntrepeterId], 
     [LanguageId], 
     [isSignLang], 
     [prof_level_id]) 
VALUES 
(@interpreterId , 
@languageId, 
@isSignLanguage, 
@prof_level) 

희망이 또한

관련 문제