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

Adaptive Server Enterprise Sybase Discussion :

[T-SQL]Envoyer en paramètre de proc stock Sybase une variable date shell


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre du Club Avatar de Doctor Z
    Inscrit en
    Mars 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 88
    Points : 58
    Points
    58
    Par défaut [T-SQL]Envoyer en paramètre de proc stock Sybase une variable date shell
    Bonjour à tous,

    Voilà j'ai un script shell dans lequel je calcule une date (en fait, je reçoi un
    fichier duquel j'extrai la date que je mémorise dans une variable). A l'intérieur
    d'une session iSQL (Sybase) dans ce shell, j'exécute une procédure stockée.
    Je souhaiterai envoyer comme paramètre de cette procédure stockée ma
    date. Comment puis-je faire?

    Voilà comment je calcule la date (la variable $fileimp possède le nom du
    fichier [exemple : toto_20071029] duquel j'extrais la date) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set DateFichier = `echo $fileimp | cut -d"_" -f2`
    set DateFichier = `echo $DateFichier | cut -d"." -f1`
     
    # --- Exécution de la procédure stockée
    isql -U$login -P$passwd <<eot  > $REPTMP/temp.sts
     
    DECLARE @statut int
    print ' '
    exec @statut = MABASE.proprio.maproc $DateFichier
    Avec ce code, il me pose un problème sur la date, comment puis-je faire ?

    Par avance, je vous en remercie.

  2. #2
    Membre chevronné

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Il est en général plus facile de répondre si on a les messages d'erreurs :-)

    Ceci étant, je pense que comme la date est de la forme 20071028 je pense que ASE pense qu'il s'agit d'un nombre. Des quotes autour de la date devraient résoudre le problème...

    Michael

  3. #3
    Membre du Club Avatar de Doctor Z
    Inscrit en
    Mars 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 88
    Points : 58
    Points
    58
    Par défaut
    Avant toute chose, merci pour ta réponse.

    En fait je reçoi un message d'erreur personnalisé que je n'arrive pas à
    retrouver.

    En fait, ce que je veux est la chose suivante : d'après le cas exposé ci-
    dessus, je cherche à envoyer la date récupérée par le biais d'un paramètre
    à la procédure stockée (peut importe que cette date soit réellement une
    variable de type date ou pas), puis dans ma procédure stockée avoir un
    paramètre pour récupérer cette information.

    Exemple :
    - j'ai un fichier nommé exemple_20071029
    - un shell nommé shell.csh
    - une procédure stockée nommé ma proc

    Par le biais la commande de découpage, j'ai récupère ma date (ce qui
    fonctionne), puis je mémorise ma date dans une variable que j'envoi ensuite
    en paramètre à ma procédure stockée.

    Voici le code dans mon shell.csh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Récupération de la date
    set DateFichier = `echo $fileimp | cut -d"_" -f2`
    set DateFichier = `echo $DateFichier | cut -d"." -f1`
     
    # Envoi de la date à ma procédure stockée maproc
    isql -U$login -P$passwd <<eot  > $REPTMP/temp.sts
    DECLARE @statut int
    print ' '
     
    exec @statut = MABASE.moi.maproc $DateFichier
    Voici ensuite le code de maproc :
    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
    use MABASE
    go
     
    if exists (SELECT 1 FROM sysobjects WHERE type = 'P' AND name = 'maproc')
    BEGIN
            DROP PROC maproc
            print 'drop proc maproc'
    END
    go
     
    print 'create proc maproc'
    go
     
    CREATE PROCEDURE maproc
    (
    	@dt_fichier		int
    )
    AS
     
    print 'Date du fichier :'
    print @dt_fichier
    Et cela ne fonctionne pas et je ne sais pas pourquoi, car j'ai bien des 2 côtés
    un entier ...

  4. #4
    Membre chevronné

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    De nouveau: qu'est-ce qui ne fonctionne pas ?

    Est-ce que le print dans la proc ne marche pas, ou ???

    Note: ton script shell n'a pas de "eot" correspondant au "here document" que tu démarre dans ton appel à isql, mais je suppose que c'est une erreur de transcription...

    Michael

  5. #5
    Membre du Club Avatar de Doctor Z
    Inscrit en
    Mars 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 88
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Avant toute chose, merci pour ta réponse.

    Il ne rentre même pas à l'intérieur de la procédure stockée, car j'ai un print
    et celui-ci ne s'exécute pas (j'ai un log qui recense cette information).

    Pour le eot, c'est parce que je n'ai pas copié l'intégralité de mon code

    Qu'est ce qui ne fonctionne pas? Et bien, comme indiqué j'envoi la date en
    paramètre et apparement il ne l'accepte pas (j'ai un message d'erreur
    personnalisé qui m'indique :

    Msg 44400, Level 16, State 1:
    Server 'MONSERVEUR', Procedure 'maproc', Line 44:
    Erreur lors de la recuperation de la date de reference du dernier traitement
    (return status = 98)
    Extraction des donnees STATUS_EXEC1= 98
    Je suis convaincu que c'est quelque chose de rien du tout, mais je n'arrive
    pas à savoir ce qui cloche

    Pourtant, la syntaxe, que se soit du shell ou de la procédure stockée est bien
    correcte, n'est-ce pas ?

  6. #6
    Membre du Club Avatar de Doctor Z
    Inscrit en
    Mars 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 88
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    En fait n'exécutait pas le bonne procédure , désolé du dérangement et merci
    encore.

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

Discussions similaires

  1. Mettre le résultat d'une Proc Stock dans une variable
    Par zooffy dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/06/2008, 11h20
  2. Réponses: 3
    Dernier message: 12/10/2007, 16h26
  3. [SQL 2000]Performance Fonction vs Proc Stock
    Par zooffy dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2007, 15h38
  4. Réponses: 3
    Dernier message: 28/08/2007, 15h21
  5. PB proc stock avec like variable %
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 31/03/2005, 11h49

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