Je viens de télécharger et d'installer la toute dernière mouture de ASE.
Cette version comporte de nombreux changements attendus depuis longtemps, dont voici les principaux:
1. Fonctions statistiques (deviation standard, variance, etc),
2. Fonctions T-SQL appelable en ligne,
3. Trigger "instead of" applicable sur des vues,
4. Archive database (ouverture d'un dump en lecture directe, déjà dispo en 12.5.4).
Les exemple ci-dessous ont été "piqué" dans la doc ASE 15.0.2 (Nouvelle Fonctionalité) - je n'ai pas encore fait de tests exhaustifs de ces fonctions.
Les fonctions en T-SQL s'utilisent comme ceci:
que l'on peut appeler directement dans une requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 create function BONUS(@salary int, @grade int, @dept_id int) returns int as begin declare @bonus int declare @cat int set @bonus = 0 select @cat = dept_cat from department where dept_id = @dept_id if (@cat < 10) begin set @bonus = @salary *15/100 end else begin set @bonus = @salary * 10/100 end return @bonus end
ce qui n'était pas faisable avec une proc stockée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select emp_name, BONUS(salary, grade, dept_id) from emp_data where some_condition...
Le trigger "instead of" permet de faire une exploitation plus poussé des vues, comme par exemple:
Il y a évidemment aussi de nombreuses autres améliorations, en particulier au niveau de l'optimiseur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 CREATE TABLE EmployeeWest ( empid int primary key, empname varchar(30), empdob datetime, region char(5) constraint region_chk check (region='West')) CREATE TABLE EmployeeEast ( empid int primary key, empname varchar(30), empdob datetime, region char(5) constraint region_chk check (region='East')) CREATE VIEW Employees as SELECT * FROM EmployeeEast UNION ALL SELECT * FROM EmployeeWest CREATE TRIGGER EmployeesInsertTrig on Employees INSTEAD OF INSERT AS BEGIN INSERT INTO EmployeeEast SELECT * FROM inserted where region = "East" INSERT INTO EmployeeWest SELECT * FROM inserted where region = "West" END -- Ceci va inserer les données dans EmployeeEast: INSERT INTO Employees values (10, 'Jane Doe', '11/11/1967', 'East') -- Et ceci dans EmployeeWest INSERT INTO Employees values (11, 'John Smith', '01/12/1977', 'West')
En attendant la 15.1 qui elle aura la fonctionalité "shared disk cluster" (instances ASE multiples s'appuyants sur les mêmes disques physiques).
Michael
Partager