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 :

[ASE 12.0 ] Batch ISQL Parametres TSQL


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut [ASE 12.0 ] Batch ISQL Parametres TSQL
    Bonjour
    Est-il possible de lancer sous DOS iSql avec des paramétres:

    >isql -Sxxx -Uyyy -Pzzz -i<script_TSQL> param1 param2
    Ceci dans le but de récupérer (comment faire ?) ces paramétres pour les instructions du script Transact SQL.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from <nom_table> where <nom_colonne>=param1
    Merci
    mso

  2. #2
    Membre chevronné

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Non, isql ne permet pas de passer des paramètres sur la ligne de commande.

    Par contre sqsh (www.sqsh.org) le permet, en faisant qqch comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqsh -Usa -P... -S... -L p1=valeur -L p2=valeur...
    et dans le code SQL on mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select ... from ...
    where ma_colonne = "$p1"
    ...
    Malheureusement je ne pense pas que sqsh soit compilable sous Windows sans apporter passablement de modifications...

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonjour
    même si je ne peux pas me servir de sqsh (l'application est lancée à partir du client Windows), merci d'avoir signalé cette possibilité.
    Je pense utiliser plutôt les procédures stockées et le lancer (avec les paramètres) via les variables environnement. En générant dynamiquement le script de lancement (cf. la discussion "Saisie de données dans une procédure stockée".
    Je vais donc faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    SET Nom_PROC=%1%
    SET Param1=%2%
    SET Param2=%3%
     
    echo exec %Nom_Proc%  %Param1% %Param2% > MonSQL.sql
    echo go >> MonSQL.sql
     
    isql -Usa -Pxxx -SMonServeurSQL -i MonSQL.sql -D maBase
     
    del MonSQL.sql
    mso
    P.S.
    J'ai encore une petite question: peut-on déclarer des variables dans les scripts de T-SQL ?

  4. #4
    Membre chevronné

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    c.f. ton "ps".

    Oui - un script isql a exactement la même syntaxe qu'une proc stockée. Avec Sybase il n'y a pas de différence (pas de PL/SQL vs. SQL pur pour les requêtes, p.ex.).

    Donc dans un script SQL simple tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    declare @ladate datetime, @nom varchar(50)
    select @ladate="%DATE%", @nom = "%NOM%"
     
    select ... from ... where lastChangeDate = @ladate and nom = @nom
    ...
    Je ne m'y connais pas très bien en script .bat windows (je n'en ai plus fait depuis la fin des années 80 ), mais je suppose qu'on peut trouver un moyen de faire apparaitre les valeurs des variables %xxx% dans le script SQL avant de le faire exécuter dans avec isql (sous Unix je ferais un "here" document, mais je suspecte que cela ne marche pas comme cela sous Windows...)

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    merci bien

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

Discussions similaires

  1. [ASE 15.0.2] augmenter parametre "number of user connections"
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 10
    Dernier message: 11/02/2008, 13h56
  2. [ASE][TSQL]utilisation de decode() dans Sybase
    Par madina dans le forum Sybase
    Réponses: 3
    Dernier message: 21/06/2006, 17h38
  3. [ASE 12.5.3][TSQL] - Creation d'une table temporaire en dynamique
    Par CVince dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 16/06/2006, 15h30
  4. [ASE][TSQL]date du jour _-10
    Par marc olivier dans le forum Sybase
    Réponses: 1
    Dernier message: 07/06/2006, 17h58
  5. [Sybase 12] + ISQL + batch dos
    Par zakori dans le forum Sybase
    Réponses: 1
    Dernier message: 06/03/2006, 10h59

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