在学生 table 中自动插入卷号的光标

Cursor to auto insert Roll Numbers in student table

如何在单击表格中的分配按钮时按升序从 1、2、3 自动填充学生的 roll number 列?

TABLE

如何调用游标? 我对所有数据库操作都使用存储过程。

示例代码

declare @studID int

declare rollCursor CURSOR FOR
select * from TESTING 

OPEN rollCursor 

如果你想要一个单一的StudentId,就在你的程序中写

 -- Where @StudendId will be parameter to your stored procedure
 SELECT * FROM TESTING
 WHERE StudId = @StudendId

以下是使用 CURSOR 的方法。但请注意,CURSOR 有性能问题。所以很少用。

DECLARE @StudId INT
DECLARE @FName VARCHAR(50)
DECLARE @ROLL INT

-- Here you declare which all columns you need to loop in Cursor
DECLARE rollCursor CURSOR FOR 
select * from TESTING
WHERE StudId = @StudendId
ORDER BY StudId;

OPEN rollCursor

-- Loop starts from here 
FETCH NEXT FROM rollCursor
INTO @StudId,@FName,@ROLL

WHILE @@FETCH_STATUS = 0
BEGIN

     -- Select studentid one by one from the table
     SELECT * FROM TESTING
     WHERE StudId = @StudId

    -- Fetches next record and increments the loop
    FETCH NEXT FROM rollCursor
    INTO @StudId,@FName,@ROLL
END 

CLOSE rollCursor;
DEALLOCATE rollCursor;

编辑:1(获取 table 的行号)

如果您需要根据 roll 的结果,请使用以下查询

-- This will bring you the records with roll number in ascending order
-- If you want in descending order just change ASC to DESC
SELECT studid,Fname,ROW_NUMBER() OVER(ORDER BY roll ASC) roll 
FROM StudId

编辑:2(创建身份字段)

您需要将 roll number 列设置为 Identity field,即具有整数值的列会在新插入时自动递增值。

将卷号列设置为 Identity field 后,尝试使用以下插入物

INSERT INTO TESTING(StudId,Fname)VALUES(10,'A')
INSERT INTO TESTING(StudId,Fname)VALUES(10,'A')

您不会 select 或在插入中包含卷号列。会自动递增。