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

DB2 Discussion :

Current Path / Schema dans une procédure stockée


Sujet :

DB2

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut Current Path / Schema dans une procédure stockée
    Bonjour,

    J'ai une procédure stockée qui me renvoie une valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DECLARE C CURSOR FOR
    SELECT X FROM Y WHERE ...;
     
    FETCH C INTO VAR;
     
    RETURN VAR;
    Appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Schema.maproc() FROM SYSIBM.SYSDUMMY1;
    Le problème c'est que j'ai un message d'erreur comme quoi la table Y n'est pas trouvée dans le schéma.

    J'ai essayé de mettre des SET CURRENT PATH / SET CURRENT SCHEMA avant le SELECT qui appelle la procédure stockée mais rien à faire...

    Une idée? Merci!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Essaie en modifiant d'abord la current library avec la commande

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Déso mais CHGCURLIB est une commande AS400 et pas une instruction SQL...

    PS: il s'agit tjrs de la même fonction scalaire et pas procédure stockée

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    ... CHGCURLIB est une commande AS400
    Je le sais bien ! Il faut passer la commande avant d'exécuter l'instruction SQL.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Ok, déso mais je ne suis pas sur un programme qui tourne sur l'as400 mais dans un programme java qui tourne sous windows et envoie des requêtes sql à l'as400... Je ne pense donc pas être en mesure d'exécuter une commande as400.

    Enfin p-e que je me trompe et merci de prendre le temps de te pencher sur mon problème

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Je ne pense donc pas être en mesure d'exécuter une commande as400.
    Je pense que si, au contraire ! Cherche dans ta doc Java, il doit certainement y avoir un moyen de lancer une commande AS400 depuis le client Java. Cela existe dans Windev, dans VB.Net, et d'autres clients sans doute que je ne connais pas.
    Regarde également dans les définitions d'environnement d'exécution de Java ou dans je ne sais ni où ni comment comment vous appelez ces définitions.

    D'un autre côté, je me pose ces questions.
    Pourquoi faire un curseur et un FETCH plutôt qu'un simple SELECT INTO ? Ta fonction ne peut renvoyer qu'une seule variable à la fois, n'est-ce pas ?

    La clause WHERE est-elle toujours la même, teste-t-elle toujours les mêmes valeurs ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    SELECT X INTO VAR FROM Y WHERE ...;
    RETURN VAR;

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Oui j'ai déjà exécuté des commandes as400 à partir de java (appel de programme cl ou cobol) mais cet environnement d'exécution est totalement indépendant de l'environnement sql (simple connexion et envoi de requêtes).

    J'ai fait un curseur pour faire un lock de la ligne (avec select ... for update + current of) c'est d'ailleur toi qui m'a rapellé comment on peut faire un lock d'une ligne.

    Je te tiens au courrant de mes investigations. Merci.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Bon je n'ai pas trouvé de solution pour ne pas écrire en dur le schéma (ou librairie) où la fonction doit aller lire les données.

    Je suis reparti à 0 pour résoudre mon problème initial qui était de
    Lire un numéro et l'incrémenter tout lockant la table

    Je l'ai fait avec java et des transactions:

    conn.setAutoCommit(false);
    conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

    UPDATE (--> lock)

    SELECT

    UPDATE

    COMMIT


    Désolé si je n'ai pas été assez clair dans ma description du problème et merci à toi Mercure d'avoir tenté de m'aider.

    à+

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 17h48
  2. Saisie de données dans une procédure stockée
    Par Hastaroth dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/10/2004, 10h54
  3. Vérification du type de données dans une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 12h20
  4. Marquer une pause dans une procédure stockée
    Par PéPénet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2003, 11h42
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 12h31

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