我陷入困境,我正在创建一个表,根据表我想创建一个过程,但它显示错误。
我将提供错误的快照,我将提供表结构和proc结构:
请帮忙..谢谢
表:
create table Students_Table
(
Student_ID bigint not null,
Student_Name nvarchar(50) not null,
Student_Enrollment_No bigint not null,
Student_Library_ID bigint,
Student_Gender nvarchar(15) not null,
Student_Phone nvarchar(15) not null,
Student_Email nvarchar(100) not null,
Student_Division nvarchar(30) not null,
Student_Current_Semester nvarchar(20) not null,
Student_Password nvarchar(80) not null,
Photo_Name nvarchar(MAX),
Photo_Size bigint,
Photo_Binary varbinary(MAX),
Username nvarchar(20),
Student_Address nvarchar(100),
Year nvarchar(10),
Shift nvarchar(10),
Roll_Number int,
Parents_Contact nvarchar(15)
);
存储过程:
create proc Insert_Student
@Student_Name nvarchar(50),
@Roll int,
@Student_Enrollment_No bigint,
@Student_Library_ID bigint,
@Student_Gender nvarchar(15),
@Student_Phone nvarchar(15),
@Student_Email nvarchar(100),
@Student_Division nvarchar(30),
@Student_Current_Semester nvarchar(20),
@Username nvarchar(20),
@Student_Address nvarchar(100),
@Student_Password nvarchar(80),
@Student_Shift nvarchar(10),
@Student_Year nvarchar(10),
@PContacts nvarchar(15),
@Photo_Name nvarchar(max),
@Photo_Size int,
@Photo_Binary varbinary(max),
@New_ID int output
as
begin
Insert into Students_Table
values (@Student_Name, @Student_Enrollment_No, @Student_Library_ID,
@Student_Gender, @Student_Phone, @Student_Email,
@Student_Division, @Student_Current_Semester, @Student_Password,
@Photo_Name, @Photo_Size, @Photo_Binary,
@Username, @Student_Address, @Student_Year, @Student_Shift,
@Roll, @PContacts)
select @New_ID = SCOPE_IDENTITY();
end
这是我得到的错误:
Msg 213,Level 16,State 1,Procedure Insert_Student,Line 23 [Batch Start line 80]
列名或提供的值数与表定义不匹配。
答案 0 :(得分:5)
插入查询中的列数与列数不匹配。所以指定列名:
Insert into Students_Table (Student_Name ,Student_Enrollment_No,Student_Library_ID,...)
Values (@Student_Name,@Student_Enrollment_No, @Student_Library_ID, ... )
如果您不想指定列名,则应将Student_ID指定为自动增量标识。
答案 1 :(得分:1)
我认为错误是由于您提供的值插入的差异所致。您的表需要19个字段,并且您提供18个。您需要更改Id以使其自动增量或在插入语句中提供Id。