Developpez.com - Rubrique Sybase

Le Club des Développeurs et IT Pro

ASE 15.0.2 est disponible : quelques nouveautés

Par Michael Peppler

Le 2007-06-21 10:34:18, par mpeppler, Membre chevronné
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:

Code :
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

que l'on peut appeler directement dans une requête:

Code :
1
2
3
4
select emp_name, BONUS(salary, grade, dept_id)
  from emp_data
where some_condition...

ce qui n'était pas faisable avec une proc stockée.

Le trigger "instead of" permet de faire une exploitation plus poussé des vues, comme par exemple:

Code :
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')

Il y a évidemment aussi de nombreuses autres améliorations, en particulier au niveau de l'optimiseur.

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
  Discussion forum
1 commentaire
  • mpeppler
    Membre chevronné
    La version 15.0.2 est maintenant disponible gratuitement dans la version "Express" pour linux: http://www.sybase.com/linuxpromo, et dans la version "Developper" ici; http://www.sybase.com/ase_1500devel (Windows 32bit, linux x86 32 et 64 bit, Solaris SPARC 64 bit).

    Toutes ces versions sont gratuites - la version Express est gratuite pour toutes les applications (elle peut donc être utilisée pour déployer une application en production), et la version "Developper" est gratuite pour faire du développement.

    Les deux versions ont évidemment certaines limites:

    Express: 1 engine, max 5GB de disques et max 1GB de RAM alloué à Sybase, aucune options supplémentaires (comme le chiffrage en ligne, le full-text search, etc) disponible.
    Developper: 1 engine, max 25 connexions simultanées. Par contre la plupart des options sont activées (sauf le full-text search, parce qu'elle implique le payement de royalties à Verity).

    Michael