Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 12h32   #1
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : juin 2011
Messages : 4
Points : 1
Points : 1
Par défaut migration de PL/SQL vers MYSQL

bonjour ,

d'abord je tiens a vous remerciez pour vos efforts considérables pour nous aider , et vraiment c'est un honneur de poster ici .

je suis entrain de migrer une base de donnée oracle vers MYSQL ( je suis debutant dans les deux ) et je travail maintenant sur les procédures stockés. bon disant que j'ai trouvé les solution pour migrer quelques procédures développées en PL/ SQL vers MYSQL mais j'ai tombé sur quelques obstacle que j'arrive pas a les surpasser et j'aime bien si vous pouvez m'aider sur le problème suivant :

* j'ai pas réussi a trouvez la solution pour migrer la procedure suivante de PL/SQL ver mysql :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE procedure WORKS_DAU_I_PRC(p_W_VALUES   IN VARCHAR2 ) AS
V_WORKS_ID integer;
V_WELL_SCHEMA Varchar2(30):= well_loggin;
begin
IF V_WELL_SCHEMA IS NOT NULL then
  EXECUTE IMMEDIATE 'select '||V_WELL_SCHEMA||'.S_WORKS_DAU.NEXTVAL  from dual' INTO V_WORKS_ID;
  EXECUTE IMMEDIATE 'insert into '||V_WELL_SCHEMA||'.WORKS_DAU
    (working_id,W_VALUES)
  values (:1,:2)' USING V_WORKS_ID,p_W_VALUES ;
end IF;
commit;
end;
généralement j'utilise " PREPARE etat et EXECUTE etat" pour remplacer EXECUTE IMMEDIATE (cas de la requette insert dans ce code ) , mais pour ce cas j'ai pas trouvez la solution pour :
Code :
EXECUTE IMMEDIATE 'select '||V_WELL_SCHEMA||'.S_WORKS_DAU.NEXTVAL  from dual' INTO V_WORKS_ID;
Merci d'avance
Essou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 14h39   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 850
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 850
Points : 1 327
Points : 1 327
salut,

si c'est l'insertion des variable dans la chaine, tu fait un concat, tu stockes son résultat dans une variable genre truc:
Code sql :
1
2
3
4
5
6
...
@truc=concat('select ',V_WELL_SCHEMA,'.S_WORKS_DAU.NEXTVAL  INTO @V_WORKS_ID from dual');
prepare exe FROM @truc;
execute exe;
deallocate prepare exe;
...

par contre tu dois déclarer V_WORKS_ID comme globale à ta session (avec un @) car tu ne peux manipuler que des variables globale avec une requête préparée...
le into est toujours avant le from en mysql...
tu ne peux pas mettre le concat directement dans le prepare from...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h10   #3
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : juin 2011
Messages : 4
Points : 1
Points : 1
salut cher ericd69 ,

merci pour votre aide . je vais essayer avec votre proposition sauf que je vais affecter V_WORKS_ID a un variable globale pour l'utiliser avec la requette preparé.

merci encore
Essou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 20h35   #4
Invité de passage
 
Homme
Administrateur de base de données
Inscription : juin 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : juin 2011
Messages : 4
Points : 1
Points : 1
bonsoir ,
le problème est résolu merci beaucoup pour votre aide .
Essou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h51.


 
 
 
 
Partenaires

Hébergement Web