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