Langage SQL commun Oracle/MySQL

Langage SQL commun Oracle/MySQL - SQL/NoSQL - Programmation

Marsh Posté le 10-09-2008 à 11:48:06    

Bonjour,
 
Je cherche un langage commun entre Oracle et MySQL pour certaine opération. Opération faite dans des requêtes pour des objets sous Business Object.
 
Notamment:
 
- Ajouter un nombre de mois à une date (nombre de mois étant une variable)
Oracle > Add_month(date, n)
MySQL > date + interval n month ou AddDAte(date, interval n month)
 
Le mot interval existe bien en Oracle également mais attend en nombre de mois un numérique alors que l'on peut mettre une variable pour MySQL.
 
Avez des idées pour un langage SQL qui marcherai sous ces 2 bases?
 
Merci.
Lowee

Reply

Marsh Posté le 10-09-2008 à 11:48:06   

Reply

Marsh Posté le 10-09-2008 à 11:55:26    

Malheureusement, non, ça n'existe pas.
 
Le plus simple, si tu as une version MySQL 5, c'est d'écrire tes propres fonctions en PL/SQL, et ainsi avoir la même syntaxe sur les deux systèmes. Genre tu crées une fonction "Add_Month()" sous MySQL


Message édité par MagicBuzz le 10-09-2008 à 11:55:33
Reply

Marsh Posté le 10-09-2008 à 13:20:28    

Ca, ca me plait pas mal.
 
J'ai bien la version 5 de MySQL. Saurais - tu me dire la démarche à suivre pour créer des fonctions sous MySQL?

Reply

Marsh Posté le 10-09-2008 à 13:26:22    

je ne connais pas Business Object mais en cognos (un de ses concurrents) il implémente ses propres méthodes et remappe vers les fonctions du sgbd correspondant, check peut-être cette piste aussi histoire de ne pas réimplémenter un truc en natif.
 
genre en cognos j'ai un _add_months et pour une connexion autre que odbc (je pense) il l'interprétera suivant le sgbd derrière

Reply

Marsh Posté le 10-09-2008 à 13:48:18    

Reply

Marsh Posté le 10-09-2008 à 13:50:50    

Merci pour le lien.
 
Mais j'ai un peu de mal à comprendre comment on declare ce que fait la fonction.
 
Quelqu'un pourrait-il me donner un exemple de script pour créer la même fonction que add_month chez oracle?
 
Je comprendrai surement un peu mieux la méthode avec un exemple....

Reply

Marsh Posté le 10-09-2008 à 14:43:09    

Voilà, j'ai ma fonction add_month sous dbvisualizer qui est donc maintenant égale à un adddate sous MySQl.
 
Dans dbvisualizer ca fonctionne très bien. En revanche quand je vais sur BO il n'accepte pas le mot add_month (j'ai redémarré ma base MySQL entre temps).
 
Y a t-il d'autre opération à faire après avoir créée la fonction?
 
Merci déjà pour l'aide fournie! :)

Reply

Marsh Posté le 10-09-2008 à 15:08:01    

En fait je me suis trompé de base :P
 
Mais j'avance a grand pas! il me reste juste un souci de format d'un paramètre.
 
Voici ma requête pour créer la fonction:
 
create function add_months (date date, n int) returns date
return adddate(date, interval n month)
 
Mais ici n est un integer. Comment faire que n soit une variable? Car sous oracle on peut mettre n sous forme de variable et ca marche...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed