我陷入了一种情况,我正在创建一个表,根据表我想创建一个过程,但它显示错误

时间:2018-03-12 17:04:30

标签: c# sql-server database

我陷入困境,我正在创建一个表,根据表我想创建一个过程,但它显示错误。

我将提供错误的快照,我将提供表结构和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]
  列名或提供的值数与表定义不匹配。

2 个答案:

答案 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。