CREATE TABLE Escursione( Localita varchar(20), Comune varchar(10), Guida varchar(4) REFERENCES Guide(Codice) ON DELETE NO ACTION ON UPDATE CASCADE, Data datetime, PartecipantiAdulti int, PartecipantiMinori int CHECK (PartecipantiMinori between 0 and 10), TempoPercorrenza decimal(2,1) CHECK (TempoPercorrenza between 0 and 9), Quota int CHECK (Quota%10=0), PRIMARY KEY (Localita,Comune,Guida,Data), CONSTRAINT FK_METE FOREIGN KEY (Localita,Comune) REFERENCES Mete(Localita,Comune) ON DELETE CASCADE ON UPDATE CASCADE, ) INSERT INTO Escursione VALUES('Lago dei fiori','Genova','pm23','1/8/2002', 60, 8, 5.5, 60) INSERT INTO Escursione VALUES('Lago dei fiori','Genova','pm23','2/8/2002', 40, 5, 5.5, 60) INSERT INTO Escursione VALUES('Punta S. Anna','Chiavari','ca89', '2/8/2002', 20, 0, 7, 20) INSERT INTO Escursione VALUES('Monte Fasce','Genova','ca89', '3/8/2002', 30, 2, 2.3, 10) INSERT INTO Escursione VALUES('Cascate del vento','Ceranesi','ca89', '3/8/2002', 20, 10, 5, 20) create procedure EscursioneCon @guida varchar(4) as DECLARE @data datetime DECLARE @Cognome VARCHAR(30) DECLARE @nome VARCHAR(30) DECLARE @localita VARCHAR(30) DECLARE @comune VARCHAR(30) DECLARE @partecipanti int DECLARE @ricavo DECIMAL(6,2) if (exists (select * from Escursione where guida=@guida)) begin DECLARE c CURSOR FOR select Data,Cognome,Nome,Escursione.Localita,Escursione.Comune,PartecipantiAdulti+PartecipantiMinori, Quota * PartecipantiAdulti + Quota*.8*PartecipantiMinori from Escursione, Guide where Guide.Codice = Escursione.Guida -- condizioni di join and Guide.Codice = @guida order by Data OPEN c FETCH NEXT FROM c INTO @data, @Cognome, @Nome, @localita, @comune, @partecipanti, @ricavo WHILE (@@FETCH_STATUS = 0) BEGIN PRINT 'In data: ' + CAST(@data AS VARCHAR(10)) + ' la guida: ' + @Cognome + ' ' + @Nome + ' ha coordinato l''escursione in localita'': ' + @localita + ' del comune di: ' + @comune + ' con numero totale di partecipanti: ' + CAST(@partecipanti AS VARCHAR(3)) + ' con un ricavo di: ' + CAST(@ricavo AS VARCHAR(10)) FETCH NEXT FROM c INTO @data, @Cognome, @Nome, @localita, @comune, @partecipanti, @ricavo END CLOSE c DEALLOCATE c end else delete from Guide where Codice=@guida -- per l'esecuzione della stored procedure exec EscursioneCon @guida='pm23'