如何从1,2,3 ......按升序顺序自动填充学生的roll number
列,并在表单中指定按钮点击?
表格
如何调用光标? 我正在使用存储过程进行所有数据库操作。
示例代码
declare @studID int
declare rollCursor CURSOR FOR
select * from TESTING
OPEN rollCursor
答案 0 :(得分:0)
如果你想要一个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 (获取表格的行号)
如果您需要根据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 (创建身份字段)
您需要将卷号列设置为Identity field
,即具有整数值的列,该值会在新插入时自动递增值。
将卷号列设置为Identity field
后,请尝试使用以下插入
INSERT INTO TESTING(StudId,Fname)VALUES(10,'A')
INSERT INTO TESTING(StudId,Fname)VALUES(10,'A')
您不会在插入中选择或包含卷号列。它会自动增加。