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

Bibliothèques Discussion :

ODBC et commandes non SQL


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    tsp
    tsp est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Par défaut ODBC et commandes non SQL
    Bonjour,
    pour me connecter à une base de données et executer des requetes, j'utilise l'ODBC et les functions SQLConnect et SQLExecDirect, tout va tres bien pour les requetes SQL, j'obtiens bien des tables.

    Mais j'aimerais savoir si avec SQLExecDirect ou avec une autre fonction je peux executer des lignes de codes type PL/SQL du style :

    En résumé j'aimerais pouvoir envoyer la commande print 'toto' à la BD et que celle ci me renvoie le resultat à savoir toto

    Si quelqu'un a une idée, s'il vous plait.

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Par défaut
    Que cherches-tu à faire exactement ? L'intérêt d'une base de données est d'exécuter des requêtes et de renvoyer des données tabulaires, et pas vrament de faire des print...
    Ceci dit tu peux appeler des procédures stockées via ODBC, ce qui permet de faire certains traitements sur le serveur directement.

  3. #3
    tsp
    tsp est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Par défaut
    bien entendu, le print n'etait qu'un exemple. Mais je suis en train de faire une dll qui interroge plusieurs base de données différentes.

    Donc on entre une requete sql, on choisit les bases que l'on veut interroger et hop ça me renvoit les resultats, pour une requete SQL pas de soucis. Mais il faudrait aussi qu'on puisse envoyer des bouts de code Transact-SQL (je suis sur SQL server) comme pour exemple creer des procedures stockées sur toutes les bases ou que sais-je encore.

    A priori j'ai trouvé comment envoyer le code Transact-SQL à la base, avec la commande SQLCommand.ExecuteQuery ou ExecuteNonQuery, d'apres mes premiers tests ça marche MAIS lorsque je crée une procedure stockée ou détruit une procedure stockée, je n'ai aucun message en retour hors à priori la base en renvoi un.

    Et c'est pour ça que j'ai pris comme exemple la commande Transact-SQL Print car elle me renvoie ce que je "print" normalement, ce que je n'arrive pas a avoir encore.

  4. #4
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Par défaut
    Dans le cas de requêtes qui ne renvoient pas de tables (comme la création/destruction de tables, procédures stockées, etc, ou l'insertion/suppression de lignes dans les tables), aucune table n'est effectivement renvoyée. Par contre le serveur peut te donner le nombre de lignes dans ses bases qui ont été modifiées (messages "x rows affected"). Pour ca utilise l'API SQLRowCount.

  5. #5
    tsp
    tsp est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Par défaut
    oui exact j'ai vu ça, la fonction SQLCommand.ExecuteNonQuery me renvoie justement le nombre de lignes affectées.

    Mais les messages "procedures crées" ou "procedure effacés" ou ... qui sont renvoyés par la base ? du moins le sont ils !!! y'a t'il un moyen de les recevoir.

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Par défaut
    As-tu essayé de voir avec SQLGetDiagRec si tu reçois un message d'erreur/info qui contiendrait ce qui t'intéresse ?

  7. #7
    tsp
    tsp est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Par défaut
    Bon alors je pense avoir tourné les fonctions SQLError ou SQLGetDiagRec dans tous les sens et non je n'obtiens pas ce que je veux. Mais en fait il me semble que le probleme vienne du fait que lorsque que j'execute mon bout de code Transact-SQL avec la fonction SQLExecDirect() :

    Code:
    retcode=SQLExecDirect(hstmt,(UCHAR FAR *)"Create procedure Toto As Print 'toto'",SQL_NTS);


    retcode vaut SQL_SUCCESS, donc la fonction ne me renvoie aucune info donc SQLError ou SQLGetDiagRec ne me renvoit rien.

    Donc le problème reste entier pour avoir comme retour a ma création de procédure le message renvoyé par la base.

  8. #8
    tsp
    tsp est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 82
    Par défaut
    je rectifie, avec les fonctions SQLError et SQLGetDiagRec, sur le gestionnaire d'evenement bien sur, j'arrive à avoir le toto en retour de print 'toto'.
    Donc en fait lorsque l'on crée ou détruit une procedure stockée, la base ne doit rien renvoyer, c'est pour ça que j'obtiens rien.

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

Discussions similaires

  1. executer une commande non perl avec perl
    Par kolombo dans le forum Langage
    Réponses: 17
    Dernier message: 07/08/2006, 11h28
  2. Problèmes asp et non SQL.
    Par en_stage dans le forum ASP
    Réponses: 6
    Dernier message: 24/07/2006, 15h07
  3. source ODBC pour connexion MS SQL Server
    Par grinder59 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/05/2006, 09h17
  4. [SQL-Server] Problème avec odbc et ma connexion SQL Server
    Par vodevil dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/12/2005, 10h04
  5. Commandes non reconnues.
    Par Manu' dans le forum Administration système
    Réponses: 3
    Dernier message: 07/10/2004, 17h09

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