如何解决SQL Server 2008 R2插入带标识字段的存储过程语法
| 下午好, 我已经编写了一个非常基本的存储过程,该过程将用于将QuestionText和QuestionStatus插入Questions表中,并将QuestionID int主键设置为具有身份。 语法如下:CREATE PROCEDURE InsertNewQuestion
-- Add the parameters for the stored procedure here
@QuestionText varchar(200),@QuestionStatus bit
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT into Questions
(QuestionText,QuestionStatus)
Values
(@QuestionText),(@QuestionStatus)
END
GO
执行存储过程时,出现以下错误:
INSERT语句中的列多于VALUES中指定的值
条款。 VALUES子句中的值数必须与列数匹配
在INSERT语句中指定。
正确插入记录并允许QuestionID在每次插入时自动递增的正确语法是什么?
非常感谢您的帮助和指导。
更新了存储过程语法解决方法
删除QuestionID和@@ Identity +值应为(@ QuestionText,@ QuestionStatus)
INSERT into Questions
(QuestionText,QuestionStatus)
Values
(@QuestionText,@QuestionStatus)
SQL Server知道QuestionID是一个Identity字段,并将其递增.... :-)
如果需要返回插入的标识,则在SP上创建一个out参数,并通过调用SCOPE_IDENTITY()来获取它。
SET @QuestionID = SCOPE_IDENTITY(),您不指定标识列,并且值不应该在其自己的括号中。
INSERT into Questions
(QuestionText,@QuestionStatus)
,INSERT into Questions (QuestionText,QuestionStatus)
Values (@QuestionText,@QuestionStatus)
即未指定身份字段。,CREATE PROCEDURE SPWITHPARAMETER_AND_RETURN_VALUE
(
@EMPID INT,@IDVAL INT,@RETURNVALUE INT =0 OUT
)
AS
DECLARE @COUNT INT
BEGIN
SELECT @COUNT=COUNT(*) FROM JOINTABLE WHERE EMPID=@EMPID AND IDVAL=@IDVAL
IF(@COUNT >0)
BEGIN
SET @RETURNVALUE = 1;
PRINT @RETURNVALUE
RETURN @RETURNVALUE
END
ELSE
BEGIN
SET @RETURNVALUE = 1;
PRINT @RETURNVALUE
RETURN @RETURNVALUE
END
END
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。