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 Oracle Discussion :

ORACLE passer un varchar2 en paramètre d'une proc.stock


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Points : 65
    Points
    65
    Par défaut ORACLE passer un varchar2 en paramètre d'une proc.stock
    Bonjour,

    J'arrive à faire passer en entrée de ma procédure stockée, un Long qui représenterait un "ID" et récupérer une date.
    En remplaçant dans mon code java mes "Long" en "string" qui représenterait le libellé, je ne récupère plus rien mise à part une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error :Cursor is closed.
    Je me pose la question si ou comment la procédure stockée voit qu'il faut mettre les ' ' autour de mon paramètre d'entrée (paramdate qui récupère un varchar2).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    requet := ' SELECT' 
            || ' FREQUENCE_IMPORT.DATEPROCHAIN'
            || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.DATESUIVANT = ('
                || ' SELECT MAX(FREQUENCE_IMPORT.DATESUIVANT)'
                || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                    || ' SELECT TYPE_IMPORT.ID'
                    || ' FROM TYPE_IMPORT'
                    || ' WHERE TYPE_IMPORT.CODE = ' ||paramdate 
                    || ' )'
                    || ' )'
            || ' AND FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                || ' SELECT TYPE_IMPORT.ID'
                || ' FROM TYPE_IMPORT'
                || ' WHERE TYPE_IMPORT.CODE = '||paramdate
                || ' )'
                ;

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Je pense qu'il faut les écrire.
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    requet := ' SELECT' 
            || ' FREQUENCE_IMPORT.DATEPROCHAIN'
            || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.DATESUIVANT = ('
                || ' SELECT MAX(FREQUENCE_IMPORT.DATESUIVANT)'
                || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                    || ' SELECT TYPE_IMPORT.ID'
                    || ' FROM TYPE_IMPORT'
                    || ' WHERE TYPE_IMPORT.CODE = ''' ||paramdate 
                    || ''' )'
                    || ' )'
            || ' AND FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                || ' SELECT TYPE_IMPORT.ID'
                || ' FROM TYPE_IMPORT'
                || ' WHERE TYPE_IMPORT.CODE = '''||paramdate
                || ''' )'
                ;

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Je pense qu'il faut les écrire.
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    requet := ' SELECT' 
            || ' FREQUENCE_IMPORT.DATEPROCHAIN'
            || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.DATESUIVANT = ('
                || ' SELECT MAX(FREQUENCE_IMPORT.DATESUIVANT)'
                || ' FROM CLINFOC.FREQUENCE_IMPORT'
                || ' WHERE FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                    || ' SELECT TYPE_IMPORT.ID'
                    || ' FROM TYPE_IMPORT'
                    || ' WHERE TYPE_IMPORT.CODE = ''' ||paramdate 
                    || ''' )'
                    || ' )'
            || ' AND FREQUENCE_IMPORT.REFTYPEIMPORT = ('
                || ' SELECT TYPE_IMPORT.ID'
                || ' FROM TYPE_IMPORT'
                || ' WHERE TYPE_IMPORT.CODE = '''||paramdate
                || ''' )'
                ;

    bonjour,

    ça n'a pas l'air d'être ça le problème enfin la solution.
    Le problème est que j'essaie de faire passer en paramètre d'entrée à ma procédure stockée un char ou varchar2.
    Et je suis tombé sur un lien :
    http://forums.oracle.com/forums/thre...hreadID=603040

    Qui à la fin je lis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Thank all, I tried but did not work, show same error 
     
    I see a article ,that show something about dynamic cursor , look link below
     
    for each input -- i'm inspecting it to see if it is non-null. If it is, I add to the 
    where clause and set the value in the context. Notice how in the where clause -- I 
    always use the SYS_CONTEXT function. I NEVER put the literal value in to the query (that 
    would be very bad and would trash the shared pool -- very extremely important to use bind 
    variables). Note also the use of '' to get a single ' into the where clause!
     
    http://asktom.oracle.com/pls/asktom/f?p=100:11:1058814429420375::::P11_QUESTION_ID:1288401763279
     
    can to be it my problem ?
     
    TIA
    sorry for my unknow
    Mais je n'ai pas vraiment compris par quoi je dois passer pour mettre un char en variable d'une procédure stockée.

    SI SI !! Tu as raison c'était bien ça. Je viens de voir que j'avais oublié de modifier le champs pour tester avec ta solution.
    Merci beaucoup !!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/05/2013, 16h25
  2. Réponses: 2
    Dernier message: 23/01/2012, 15h19
  3. Réponses: 0
    Dernier message: 14/11/2007, 21h02
  4. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  5. [ORACLE]Paramètre d'une proc stock
    Par HexChit dans le forum SQL
    Réponses: 3
    Dernier message: 14/09/2006, 11h23

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