我需要幫助我的存儲過程,目前我有存儲過程接受值並將這些值發佈到我的數據庫。這是一個給學生一個測驗的程序,它將他們的答案和分數記錄到數據庫中。我想跟蹤學生在每次測驗中所做的嘗試次數。我需要一種方式來爲每個學生和每個測驗設置一個計數器。這是我當前的存儲過程,當我運行它時我的數據庫給了我這個錯誤錯誤170:第17行:在'LIMIT'附近的語法不正確。 我也嘗試做一個LAST()函數,但數據庫表示LAST()函數無法識別。SQL Counter幫助
CREATE PROCEDURE [dbo].spRecordStudentScore
@StudentNum BIGINT,
@TestID BIGINT,
@DateCompleted DATETIME,
@Score FLOAT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Attempt int;
SET @Attempt = 1;
BEGIN
IF NOT EXISTS (SELECT * FROM dbo.tbStudentScores WHERE fdStudent# = @StudentNum AND fdTestID = @TestID AND fdAttempt = @Attempt)
SET @Attempt = 1;
ELSE
SELECT @Attempt = fdAttempt FROM dbo.tbStudentScores WHERE fdStudent# = @StudentNum AND fdTestID = @TestID ORDER BY fdAttempt DESC LIMIT 1
END
BEGIN TRANSACTION
BEGIN
IF NOT EXISTS (SELECT * FROM dbo.tbStudentScores WHERE fdStudent# = @StudentNum AND fdTestID = @TestID AND fdDateCompleted = @DateCompleted AND fdScore = @Score)
INSERT INTO dbo.tbStudentScores
(fdStudent#,
fdTestID,
fdAttempt,
fdDateCompleted,
fdScore)
VALUES (@StudentNum,
@TestID,
@Attempt,
@DateCompleted,
@Score)
END
-- END INSERT INTO dbo.tbStudentScores
IF @@error <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END
ELSE
BEGIN
COMMIT TRANSACTION
RETURN 0
END
END
-- END PROCEDURE [dbo].spRecordStudentScore
GO
什麼RDBMS你正在用嗎?它看起來像SQL Server,但是您使用的是非SQL Server語法,如「LIMIT」。 –