Torna al Thread

USE tempdb; GO CREATE TABLE dbo.Iscrizioni ( IDIscrizione int IDENTITY(1,1) NOT NULL , IDUtente int NOT NULL , DataIscrizione smalldatetime NOT NULL , IDEsame int NOT NULL , CONSTRAINT PK_Iscrizioni PRIMARY KEY CLUSTERED ( IDIscrizione ) ) GO CREATE PROCEDURE dbo.proc_IscriviControlla @IDUtente int , @IDEsame int , @ErrorNumber int = 0 OUTPUT AS BEGIN SET NOCOUNT ON; DECLARE @Conteggio int -- conto gli iscritti per esame SELECT @Conteggio = COUNT(*) FROM dbo.Iscrizioni WHERE IDEsame = @IDEsame IF @Conteggio >= 10 -- sarebbe meglio mettere il 10 in una tabella di parametri di configurazione e non cablarla nel codice BEGIN -- errore di superamento SET @ErrorNumber = 1 -- esco con errore RETURN END -- inserisco poichè è tutto corretto INSERT INTO dbo.Iscrizioni (IDUtente, IDEsame, DataIscrizione) VALUES (@IDUtente, @IDEsame, GETDATE()) END GO DECLARE @Errore int SET @Errore = 0 -- esempio esame 1, 10 utenti EXEC dbo.proc_IscriviControlla 1, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 2, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 3, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 4, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 5, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 6, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 7, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 8, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 9, 1, @Errore OUTPUT SELECT @Errore as Errore EXEC dbo.proc_IscriviControlla 10, 1, @Errore OUTPUT SELECT @Errore as Errore -- dopo il decimo, errore = 1 EXEC dbo.proc_IscriviControlla 11, 1, @Errore OUTPUT SELECT @Errore as Errore GO DROP TABLE dbo.Iscrizioni DROP PROCEDURE dbo.proc_IscriviControlla GO
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5