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

Sybase Discussion :

Sybase ASE : erreur JZ0P1


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut Sybase ASE : erreur JZ0P1
    Bonjour,
    J'utilise un ETL pour transferer des données d'un serveur Sybase à un autre. Pour indiquer que le traitement s'est bien passé, j'execute une procédure stockée. Cette procédure plante avec le message d'erreur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0 : JZ0P1 : java.sql.SQLException: JZ0P1: Type de résultat inattendu.
    Cependant quand j'utilise la meme procédure stockée dans mon client sybase, elle s'execute sans problemes apparents...

    Quelq'un a t il deja eu ce genre de soucis?

    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    A priori cela voudrait dire que le code Java n'est pas écrit pour traiter certains type de résultats (p.ex. le "status result" qui est renvoyé par la proc stockée).

    Si tu es en 12.5.1 ou plus récent tu pourrais essayer de positionner l'option "proc_return_status" à off pour la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set proc_return_status off
    Michael

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut
    Les résultats sont identiques en mettant cette variable à OFF.

    Quand j'utilise un client qui lui meme utilise le meme driver JDBC que celui du logiciel, la procédure s'execute correctement également. Donc a priori je peux écarter le probleme du driver.

    C'est étonnant que cela ne s'applique qu'à cette procédure, les autres s'executent correctement.

    Les retours qu'effectue la proc sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return 0
    return -100
    ...
    A priori dans le cadre ou je l'execute le retour est 0, ce qui ne me semble pas un résultat compliqué à traiter...

    La j'avoue que je vois po bien comment m'en sortir

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Est-ce que la procédure comporte du SQL qui inclus des COMPUTE BY ?

    Si la proc n'est pas immense tu pourrais peut-être la poster ici pour qu'on analyse le problème ?

    Une autre possibilité est de mettre en place Ribo pour analyser le flux entre le client et le serveur et pour voir quelle type de résultat genère ce problème.

    Michael

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Voici la documentation de ce message d'erreur:
    Unexpected result type.

    Description: The database has returned a result that the statement cannot return to the application, or that the application is not expecting at this point. This generally indicates that the application is using JDBC incorrectly to execute the query or stored procedure. If the JDBC application is connected to an Open Server application, it may indicate an error in the Open Server application that causes the Open Server to send unexpected sequences of results.

    Action: Use the com.sybase.utils.Debug(true, "ALL") debugging tools to try to figure out what unexpected result is seen, and to understand its causes.
    Je ne sais pas si tu peux positionner le mode Debug sur ta connexion...

    Michael

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut
    Voici la procédure :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    CREATE PROCEDURE dbo.PS_CREA_ANO_ENVIRONNEMENT(@PKFGT numeric(8), @PKFET numeric(8), @TYP_ANO_CDA char(12), @GRAV_CDA char(2), @PARAM1 char(80), @PARAM2 char(80), @JOB_LB char(25), @PROG_LB char(25)) 
    /* Création d'anomalie de bas niveau (accès BD, acc  ès serveur fichier, lecture/écriture fichier
    @PKFGT        : identifiant flux global traité
    @PKFET        : identifiant flux elementaire traité 
    @TYP_ANO_CDA  : code alphanumerique du type anomalie
    @GRAV_CDA     : code alphanumerique de la gravit    é
    @PARAM1       : 
    @PARAM2       : 
    @JOB_LB       : job appellant
    @PROG_LB      : etape dans le job */
     
    AS 
     
    BEGIN 
        declare  
           @GRAV_CDN    numeric(8),  
           @TYP_ANO_CDN numeric(8),
           @DATEJOUR    datetime,
           @ERR              int,
           @MESSAGE_IN         char(128),
           @MESSAGE_OUT        char(128),
           @TYP_ANO_FORMAT_MSG_LB      char(128)
           if @PKFGT=0 or @PKFGT is NULL or @PKFET=0 or  @PKFET is null
                begin
                 return -500
                end
            else
                /* Contrôle existence du flux */
                if not exists(select * from ANO_FLUX_GLOBAL_TRAITE where FLUX_TRAIT_CDN=@PKFGT)
                begin
                    return -400
                end
                else
                     if not exists(select * from ANO_FLUX_ELEM_TT where FLUX_ELEM_TT_CDN=@PKFET)
                    begin
                        return -400
                    end
                    else
                    /* Test type anomalie*/
                    select @TYP_ANO_CDN=TYP_ANO_CDN,@TYP_ANO_FORMAT_MSG_LB=TYP_ANO_FORMAT_MSG_LB from ANO_TYPE_ANOMALIE where TYP_ANO_CDA=@TYP_ANO_CDA
                    if @TYP_ANO_CDN =NULL 
                    begin
                     return -600
                    end
                    else
                        /* Test gravité*/
                        select @GRAV_CDN=GRAV_CDN from ANO_GRAVITE where GRAV_CDA=@GRAV_CDA
                        if @GRAV_CDN=NULL
                        begin
                        return -600
                        end 
                        else
                             begin            
                            /* Calcul du message ANO_MSG_LB */
                            /* replace de %1 */
                            select @MESSAGE_IN=@TYP_ANO_FORMAT_MSG_LB
                            EXEC PS_REPLACE @MESSAGE_IN, @PARAM1 ,'P1',@MESSAGE_OUT OUT
                            /* replace de %2 */
                            IF @PARAM2 <>"" OR @PARAM2<>NULL OR RTRIM(@PARAM2)<>""
                            begin
                                select @MESSAGE_IN=@MESSAGE_OUT
                                EXEC PS_REPLACE @MESSAGE_IN, @PARAM2 ,'P2',@MESSAGE_OUT OUT
                            end     
                           else
                           /* Calcul date jour*/
                            SELECT getdate()
                            SELECT @DATEJOUR=getdate()
                           /* Insert de l'anomalie */ 
                           INSERT INTO ANO_ANOMALIE(TYP_ANO_CDN,FLUX_ELEM_TT_CDN,FLUX_TRAIT_CDN,GRAV_CDN,ANO_DATE_DT,ANO_PARAM1_LB,ANO_PARAM2_LB,ANO_MSG_LB,ANO_JOB_LB,ANO_PROG_LB)
                           VALUES (@TYP_ANO_CDN,@PKFET,@PKFGT,@GRAV_CDN, @DATEJOUR, @PARAM1 , @PARAM2,  @MESSAGE_OUT, @JOB_LB , @PROG_LB )
                           COMMIT TRAN
                           return 0
                           end
     
    END
     
    GO


    Pour exemple je vous met une de celles qui marche correctement:

    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
     
     
     
    CREATE PROCEDURE dbo.PS_CREA_FLUXTT_GLOBAL (@PKFG numeric(8), @PKFGT numeric(8) output)   
    AS
     
    /* Création d'un flux global traité (à une date donnée)*/
    BEGIN 
          declare  
          @DATEDEB        datetime
     
            /* Controle valeur PKFG :     null et apparteient à la table des flux*/
            if @PKFG=0 or @PKFG is NULL 
                begin
                   return -500
                end
            else
            /* Contrôle existence du flux */
            if not exists(select * from ANO_FLUX_GLOBAL   where FLUX_CDN=@PKFG)
                begin
                return -400
                end
            else
             begin            
            /* calcul date debut alimentation*/
            SELECT @DATEDEB=getdate()
            /* Insertion dans ANO_FLUX_ELEM_TT*/
            INSERT INTO ANO_FLUX_GLOBAL_TRAITE(STATUT_CDN,FLUX_CDN,FLUX_TRAITE_ALIM_DEBUT_DT)  VALUES (1,@PKFG,@DATEDEB)
            /* lecture de la clé dans ANO_FLUX_GLOBAL_TT*/
            SELECT @PKFGT=MAX(FLUX_TRAIT_CDN) FROM ANO_FLUX_GLOBAL_TRAITE 
            COM MIT 
            return 0
            end
     
     
    END
     
    GO


    A priori j'avais deja vu la doc associée à cette erreur, mais je ne peux pas établir le mode debug.
    En effet mon SQL est inclus dans du JAVA via l'outil que j'utilise
    De meme j'ai pas l'impression qu'il y ait du compute

    Merci pour votre aide

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

Discussions similaires

  1. Sunopsis V4 Sybase ASE : erreur JZ0P1
    Par n.roussaly dans le forum ODI (ex-Sunopsis)
    Réponses: 1
    Dernier message: 20/06/2007, 16h10
  2. [SYBASE ASE 12.5.3]Message d'erreur réutilisable
    Par lsone dans le forum Sybase
    Réponses: 8
    Dernier message: 11/01/2007, 23h22
  3. [Sybase ASE 12.5.3] Gestion d'erreur avec @@error
    Par lsone dans le forum Sybase
    Réponses: 5
    Dernier message: 24/07/2006, 22h25
  4. [SYBASE ASE] Rajouter une contrainte null sur une colonne
    Par Little_Goldo dans le forum Sybase
    Réponses: 1
    Dernier message: 09/02/2005, 10h48
  5. SqlServer ou Sybase ASE
    Par Endeavour dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 02/02/2004, 14h16

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