IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

script comme SQLSERVER ou ORACLE


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut script comme SQLSERVER ou ORACLE
    Bonjour,
    que ce soit sous Oracle ou MSSQL on peut, sous toad par exemple écrire un script du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    declare @toto int
    select @toto=tata from TUTU where titi=3
    print cast(@toto as varchar)
    je n'arrive pas a faire la même chose sous MySQL
    j'ai le message d'erreur
    MySQL Database Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare _toto int(11)
    comme sous Oracle on dirait qu'il manque un Begin/end , mais je ne trouve pas de syntaxe correcte

    merci

  2. #2
    Membre confirmé
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Bonjour,

    Sous la bonne vieille console Mysql (on arrête pas le progrès mais on n'est pas obligé de toujours l'utilisé....) ca donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tata INTO @toto
        FROM TUTU 
            WHERE titi=3;
    SELECT @toto;
    En bref, la déclaration de la variable recevant le résultat de la requête ne se fait que lors de l'utilisation dans une procédure stockée (dans quel cas on utilisera BEGIN et END), on créer juste une requête "standard" et l'on affiche le résultat via un bon vieux SELECT...

    Bonne continuation

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    Merci Lagnio,
    donc si j'ai bien compris, en considérant que PI_USER est une proc qui insère un nom/prénom dans une table, je pourrais écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    BEGIN
    CALL PI_USER ('moi','j');
     
    SELECT prenom INTO @toto
        FROM USERS
            WHERE nom='moi';
    SELECT @toto;
    END;

  4. #4
    Membre confirmé
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut De rien... et voici la suite...
    Oui, c'est cela... mais je vais revenir un peu sur l'explication des variables dans mysql (qui était très light je le crains).

    Il existe 2 types de variables :
    - Variables scalaires : qui seront définis dans un bloc (BEGIN - END) et typé. La syntaxe étant :
    DECLARE nomVariable1[,nomVariable2...] typeMSQL [DEFAULT expression];
    - Variables de session : qui elles ne sont pas déclaré explicitement, elle sont déclarées en ligne de commande à l’aide du symbole « @ ».

    Bref, espérant que ce soit un peu plus clair

    Ensuite pour votre code : Il est correct mais un bloc ne peut pas se "balader" brut... il doit être contenu dans une procédure... ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DELIMITER //
    CREATE PROCEDURE PS_user()
    BEGIN
      CALL PI_USER ('moi','j');
     
      SELECT prenom INTO @toto
        FROM USERS
            WHERE nom='moi';
      SELECT @toto;
      END;
    //
    NB : Ne pas oublier de modifier le délimiter sinon une erreur serait levé dès la rencontre du premier ";"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Migration script SQLServer vers Oracle
    Par toulouseadr dans le forum Oracle
    Réponses: 1
    Dernier message: 04/01/2013, 15h47
  2. [SQLServer 2005][Oracle]Quels sont les differences de coût ?
    Par Débéa dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 15/12/2005, 07h54
  3. surrement une erreur ds mon script - comme d'hab.
    Par krapoulos dans le forum Langage
    Réponses: 9
    Dernier message: 06/11/2005, 11h06
  4. [PERL] faire tourner un script comme un service
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 13h34
  5. Retourner un resultset java de SQLServer a Oracle
    Par Slash dans le forum Oracle
    Réponses: 10
    Dernier message: 12/08/2005, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo