一段时间后我回来处理db,并且有一个奇怪的错误。
我查看了语法假设的样子,看起来是正确的。
我得到了
我尝试创建此存储过程时出现附近的语法不正确
错误:
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
你有什么想法吗?
答案 0 :(得分:3)
INSERT ... VALUES没有WHERE子句。
答案 1 :(得分:0)
您是否也希望插入@interpreterId和@languageId参数,或者在插入之前验证它们?如果它是前者,只需将字段和参数添加到插入中并删除where子句,否则,在调用SPROC之前进行验证。或者,您可以在插入,验证并决定插入或返回/退出过程之前执行select语句。
答案 2 :(得分: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]=@isSignLanguage,
[prof_level_id]=@prof_level
WHERE
[IntrepeterId] = @interpreterId AND
[LanguageId] = @languageId
END
GO
如果你想使用INSERT INTO,你会在VALUES之后遗漏这样的东西:
SET
[IntrepeterId] = @interpreterId
[LanguageId] = @languageId
SELECT
[isSignLang]=@isSignLanguage,
[prof_level_id]=@prof_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)
希望这有帮助