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

VBScript Discussion :

Procédure stockée et ADODB


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Procédure stockée et ADODB
    Bonjour à tous,
    Voici mon petit souci.
    Je veux appeler une procédure stockée (sous oracle) via un script dont voici le code :

    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
    Set cn = createobject("ADODB.Connection" )   
    Set cmd = createobject("ADODB.Command")      
     
    strConnectionString = "Provider=OraOLEDB.Oracle;Data Source=mon_data_source;User ID=mon_user_id;Password=mon_password" 
     
    cn.Open strConnectionString
     
    Set cmd.ActiveConnection = cn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "AGG_DB_TRANSFERT"       
     
    Set  result = cmd.Execute
     
    Set cmd = nothing    
    Set cn = nothing

    Voici le code de la procédure stockée.
    C'est une fonction donc je ne sais pas si c'est la même syntaxe au niveau du script.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    create or replace function AGG_DB_TRANSFERT return boolean is
     
     valcursor ma_table1%ROWTYPE ;
     Cursor mycursor is 
                SELECT XMD.* FROM ma_table1 XMD 
                JOIN ma_table2 XO ON XO.NUMOF = XMD.WO 
                WHERE XO.ETAT = 'E' ;  
                -- FOR UPDATE ;
    begin
     
     Open mycursor ;
     
      Loop 
     
       fetch mycursor into valcursor;
       exit when mycursor%NOTFOUND;
     
       insert into ma_table3@mon_database_link
       values valcursor ;  
     
       delete from ma_table1    
       where WO=valcursor.WO and STEP = valcursor.STEP;
        --where current of mycursor;
     
      End Loop;
     
     commit;
     
     close mycursor ;
     
     RETURN TRUE;
     
     exception
     
     when others then
        rollback;
        RETURN FALSE;
     
    end;
    Le script génère cette erreur :

    Code erreur : 3001.
    Source : ADODB.Command.
    Description : Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another..

    Au fait je pense qu'il n'aime pas du tout cette ligne :
    cmd.CommandType = adCmdStoredProc

    Voilà, merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Oups, je pense qu'avec un simple

    SELECT ma_fonction FROM DUAL ;

    devrai marcher mais j'ai même pas le temps de tester cela aujourd'hui donc je reposterai lundi pour éviter de vous faire perdre votre temps.

    A+ et merci quand même.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    bonjour,
    le petit code ci-dessous ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ma_fonction FROM DUAL ;
    Normal on ne peut faire des insert, update,delete dans une fonction. J'en ai donc fait une procédure dont voici le code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    create or replace procedure AGG_DB_TRANSFERT (oResult out nocopy varchar) is
     valcursor XTAB_MANUFACTURING_DATA%ROWTYPE ;
     nbchange numeric;
     Cursor mycursor is 
                SELECT XMD.* FROM XTAB_MANUFACTURING_DATA XMD 
                JOIN XFP_OFENTETE XO ON XO.NUMOF = XMD.WO 
                WHERE XO.ETAT = 'E' 
                FOR UPDATE ;  
     
    begin
     
     nbchange := 0 ;
     
     Open mycursor ;
     
      Loop 
     
       fetch mycursor into valcursor;
       exit when mycursor%NOTFOUND;
     
       insert into XTAB_MANUFACTURING_DATA@ORCL10G_REPORT
       values valcursor ;  
     
       delete from XTAB_MANUFACTURING_DATA    
       where WO=valcursor.WO and STEP = valcursor.STEP;
        --where current of mycursor;
     
       nbchange := nbchange + 1;
     
      End Loop;
     
     commit;
     
     close mycursor ;
     
     oResult := 'TRUE : ' ||nbchange;
     
     exception
     
     when others then
        rollback;
        oResult := 'Une erreur est survenue. ' || SQLCODE || ': ' || SQLERRM ;
     
    end;

    Mais j'ai une erreur dans mon vbscript

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    const adCmdStoredProc = 4   
    const adParamOutput = 2 
     
    Set cn = createobject("ADODB.Connection" )   
    Set cmd = createobject("ADODB.Command") 
    Set rParam = createobject("ADODB.Parameter")     
     
    strConnectionString = "Provider=OraOLEDB.Oracle;Data Source=mon_datasource;User ID=mon_user;Password=mon_pwd" 
     
    cn.Open strConnectionString
     
    Set cmd.ActiveConnection = cn
    cmd.CommandType =  adCmdStoredProc
    cmd.CommandText = "AGG_DB_TRANSFERT"       
     
    With rParam
        .Direction = adParamOutput
        .Type = adVarChar
        .Name = "oResult"
        .size = 200
    End with  
     
    cmd.Parameters.Append rParam
     
    cmd.Execute
     
    Set cmd = nothing    
    Set cn = nothing 
    Set rParam = Nothing
    ET voici l'erreur retournée :

    Code erreur : 3001.
    Source : ADODB.Parameter.
    Description : Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another..


    Sans paramètre dans ma procédure ca marche mais là avec mon paramètre de sortie de type varchar, je ne trouve pas.

    Merci d'avance pour votre aide.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous, voilà j'ai trouvé mon erreur.

    Dans le code vbscript où je défini mon paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With rParam
        .Direction = adParamOutput
        .Type = adVarChar  --> ICI EST MON ERREUR
        .Name = "oResult"
        .size = 200
    End with
    Ben oui Type = adVarChar mais pour lui adVarChar ne vaut rien sans cette ligne avant (que j'avais bien entendu omis) :
    CONST adVarChar = 'sa valeur'

    Voilà merci quand même. A+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/06/2015, 13h17
  2. Réponses: 2
    Dernier message: 26/09/2012, 22h15
  3. Procédure stockée et parametres sous Access en ADODB
    Par critok dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/06/2007, 10h08
  4. Procédures stockées : EXEC vs ADODB.command
    Par glidez dans le forum ASP
    Réponses: 2
    Dernier message: 13/12/2005, 10h59
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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