1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| -- ===========
-- Paramétrage
-- ===========
SET NOCOUNT ON
-- ==================
-- Lien vers Database
-- ==================
use tempdb
Le contexte de la base de données a changé*; il est maintenant 'tempdb'.
-- ==========================
-- Suppression Table 'devise'
-- ==========================
IF OBJECT_ID(N'dbo.devise', N'U') IS NOT NULL
DROP TABLE dbo.devise
Message 3726, niveau 16, état 1, serveur ORION\SQLEXPRESS, ligne 7
Impossible de supprimer l'objet 'dbo.devise' car il est référencé par une contrainte FOREIGN KEY.
-- =======================
-- Création Table 'devise'
-- =======================
create table dbo.devise (
devise integer identity(1, 1) not null,
nom varchar(10) not null,
cours decimal(15,2) not null,
constraint pk_devise_id primary key clustered (devise)
)
Message 2714, niveau 16, état 6, serveur ORION\SQLEXPRESS, ligne 5
Il existe déjà un objet nommé 'devise' dans la base de données.
-- =======================
-- Insertion dans 'devise'
-- =======================
insert into devise (nom,cours) values
('dem', 1.95583), ('frf', 6.55957), ('grd', 340.750), ('esp', 166.386)
-- ==================
-- Vidage de 'devise'
-- ==================
select * from dbo.devise;
devise nom cours
----------- ---------- -----------------
1 dem 1.96
2 frf 6.56
3 grd 340.75
4 esp 166.39
5 dem 1.96
6 frf 6.56
7 grd 340.75
8 esp 166.39
-- ========================
-- Suppression Table 'test'
-- ========================
IF OBJECT_ID(N'dbo.test', N'U') IS NOT NULL
DROP TABLE dbo.test
-- =====================
-- Création Table 'test'
-- =====================
create table test (
id integer identity(1, 1) not null,
devise integer not null,
montant decimal(15, 2) not null,
constraint pk_test_id primary key clustered (id),
constraint fk_test_devise foreign key (devise) references dbo.devise (devise) on delete cascade on update cascade
)
-- ===============================
-- Suppression Procédure 'remplir'
-- ===============================
IF OBJECT_ID(N'dbo.remplir', N'P') IS NOT NULL
DROP PROCEDURE dbo.remplir
-- ============================
-- création procédure 'remplir'
-- ============================
create procedure dbo.remplir
@nbre integer
as
declare @j smallint
begin
while (@nbre > 0)
begin
set @j = 4
while (@j > 0)
begin
insert into dbo.test (devise,montant) values (@j, 100000.00)
set @j = @j - 1
end
set @nbre = @nbre - 1
end
end
-- ==============================
-- remplissage de la table 'test'
-- ==============================
execute remplir 250000
-- ============
-- Requête N° 1
-- ============
declare @datedeb datetime = cast(current_timestamp as datetime)
update dbo.test
set montant = case devise when 1 then montant * 1.95583
when 2 then montant * 6.55957
when 3 then montant * 340.750
when 4 then montant * 166.386
else 0 end
declare @datefin datetime = cast(current_timestamp as datetime)
select datediff(millisecond, @datedeb, @datefin) as 'temps elaps'
temps elaps
-----------
2230
-- ============
-- Requête N° 2
-- ============
declare @datedeb datetime = cast(current_timestamp as datetime)
update dbo.test
set montant = t.montant * d.cours
from dbo.test as t
inner join dbo.devise as d
on d.devise = t.devise
declare @datefin datetime = cast(current_timestamp as datetime)
select datediff(millisecond, @datedeb, @datefin) as 'temps elaps'
temps elaps
-----------
9080
Appuyez sur une touche pour continuer... |