Torna al Thread

USE tempDB; GO CREATE TABLE dbo.Anagrafica ( IDUtente int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED --> la chiave la tengo intera autoincrementante , CodiceUtente varchar(50) NOT NULL --> IDUtente per me è codice utente, meglio non usare un varchar come chiave , Nome varchar(50) NOT NULL , Cognome varchar(50) NOT NULL , DataInserimento smalldatetime NOT NULL , Gruppo varchar(50) NOT NULL , FineMissione char(2) ) GO CREATE TABLE dbo.Indennita ( IDIndennita varchar(50) NOT NULL , IDUtente int NOT NULL --> Il legame è con l'id utente invece che col codice, comunque puoi risalire , Giorni tinyint --> Tieni i tipi più piccoli possibile che possano contenere informazioni, non "int" sempre se non serve , Mese varchar(25) , Anno smallint --> come sopra , DataPagamento smalldatetime --> se non ti servono i secondi e un range troppo elevato, usa smalldatetime, risparmi 4 byte a record , Gruppo varchar(50) ) GO INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('UNO','Alessandro','Alpi', '20080915', 'GRUPPOPROVA', 'NO') INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('DUE','Manuele','Carra', '20080915', 'GRUPPOPROVA', 'NO') INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('TRE','Michael','Denny', '20080915', 'GRUPPOPROVA', 'NO') INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('QUATTRO','Marco','Rossi', '20080915', 'GRUPPOPROVA', 'SI') INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('CINQUE','Daniele','Zanella', '20080914', 'GRUPPOPROVA', 'NO') INSERT INTO Anagrafica (CodiceUtente, Nome, Cognome, DataInserimento, Gruppo, FineMissione) VALUES ('SEI','Luca','Ferrari', '20080914', 'GRUPPOPROVA', 'SI') GO SELECT * FROM dbo.Anagrafica GO -- DEFINIAMO LA STORED PROCEDURE IF EXISTS(SELECT * FROM sysobjects WHERE id = OBJECT_ID('dbo.proc_IndennitaMensile')) DROP PROCEDURE dbo.proc_IndennitaMensile GO CREATE PROCEDURE dbo.proc_IndennitaMensile @Giorni tinyint , @Mese varchar(25) , @Anno smallint , @DataPagamento smalldatetime , @Gruppo varchar(50) , @IDIndennità varchar(50) , @DataInserimento smalldatetime , @FineMissione char(2) AS BEGIN SET NOCOUNT ON; INSERT INTO dbo.Indennita (IDUtente, Giorni, Mese, Anno, DataPagamento, Gruppo, IDIndennita) SELECT IDUtente , @Giorni , @Mese , @Anno , @DataPagamento , @Gruppo , @IDIndennità FROM dbo.Anagrafica WHERE DataInserimento = @DataInserimento AND Gruppo = @Gruppo AND FineMissione = 'No' END GO -- lancio la STORED PROCEDURE EXEC dbo.proc_IndennitaMensile 10, 'Aprile', 2008, '20081011', 'GRUPPOPROVA', 'PROVAID', '20080915', 'NO' GO SELECT * FROM dbo.Indennita DROP TABLE dbo.Anagrafica GO DROP TABLE dbo.Indennita GO
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5