Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

exécuter une procédure stockée d'un bdr oracle avec la ordre sql

2 réponses
Avatar
Christophe Vaquier
Bonjour,

Dans le cadre d'un développement sur un logiciel commercial externe qui
utilise oracle comme base de données, cette dernière n'est accessible qu'en
lecture seule. Or, pour les besoin d'un client, je dois remplir avec un
petit programme externe (Le prog fait avec WinDev) la base de données avec
des données récupérées dans un format spécifique (le prog fait office de
parseur). Pour se faire, un package de procédure stockée nommé GES_APPEL_EXT
contient la liste des procédures appellables qui permettent d'autrepasser la
restriction d'écriture pour enregistrer des données dans la base.

J'utilise ODBC puis comme source de données un pont access vers oracle crée
par le logiciel (on peut visionner la base de données oracle sous access et
y effectuer des requêtes en lecture seule avec ce pont)

Ci-dessous le code de connexion à la base sous WinDev :

NumConnexion est un entier = SQLConnecte ( "Pont Access - Oracle" , "INVITE"
, "INVITE" , "APISOFT_DOS_TEST" , "ODBC" ) // oui, le log commercial est
édité par APISOFT ;)

SI NumConnexion ALORS
Info ( "Connexion à la base de données réussie" )
bConnect = Vrai
SINON
SQLInfoGene ()
Erreur ( "La connexion à la base de données APISOFT_DOS_TEST a échoué."
, "Code erreur : " + SQL.Erreur , SQL.MesErreur )
bConnect = Faux
SQLDéconnecte ()
FIN


jusque là tout marche. Le problème maintenant, une simple requête SQL
"select * from article" renvoie un code d'erreur.
que se soit en codé avec :

SI SQLExec ( "SELECT * FROM ARTICLE" , "REQUETE" ) ALORS
RESULTAT = "Requête SQL exécutée avec succès."
SINON
SQLInfoGene ()
RESULTAT = "La requête a échoué. Code erreur : " + SQL.Erreur + " " +
SQL.MesErreur
FIN

SQLFerme ( "REQUETE" )

comme sous l'éditeur wdsql, après la connexion à la base de données,
jutiilse l'assistant de requête SQL qui m'affiche les tables et champs et
paf un message d'erreur

Quel ordre SQL faut-il lancer pour exécuter une procédure stockée de la
base. Normalement je doit avant toute chose appeler la procédure de
APISOFT_DOS_TEST.GET_APPEL_EXT.OPENSESSION(login,pass) avant d'écrire dans
la base mais je ne voit pas comment faire exécuter ça avec un sqlexec ou
même un hexecuterequetesql.
ça me renvoie une erreur invalid statement.

--
--------------------------------------------------
Christophe.
Pour me répondre directement enlever pasdespam_
--------------------------------------------------

2 réponses

Avatar
Roumegou Eric
Christophe Vaquier a pensé très fort :
Bonjour,

Dans le cadre d'un développement sur un logiciel commercial externe qui
utilise oracle comme base de données, cette dernière n'est accessible qu'en
lecture seule. Or, pour les besoin d'un client, je dois remplir avec un petit
programme externe (Le prog fait avec WinDev) la base de données avec des
données récupérées dans un format spécifique (le prog fait office de
parseur). Pour se faire, un package de procédure stockée nommé GES_APPEL_EXT
contient la liste des procédures appellables qui permettent d'autrepasser la
restriction d'écriture pour enregistrer des données dans la base.

J'utilise ODBC puis comme source de données un pont access vers oracle crée
par le logiciel (on peut visionner la base de données oracle sous access et y
effectuer des requêtes en lecture seule avec ce pont)

Ci-dessous le code de connexion à la base sous WinDev :

NumConnexion est un entier = SQLConnecte ( "Pont Access - Oracle" , "INVITE"
, "INVITE" , "APISOFT_DOS_TEST" , "ODBC" ) // oui, le log commercial est
édité par APISOFT ;)

SI NumConnexion ALORS
Info ( "Connexion à la base de données réussie" )
bConnect = Vrai
SINON
SQLInfoGene ()
Erreur ( "La connexion à la base de données APISOFT_DOS_TEST a échoué." ,
"Code erreur : " + SQL.Erreur , SQL.MesErreur )
bConnect = Faux
SQLDéconnecte ()
FIN


jusque là tout marche. Le problème maintenant, une simple requête SQL "select
* from article" renvoie un code d'erreur.
que se soit en codé avec :

SI SQLExec ( "SELECT * FROM ARTICLE" , "REQUETE" ) ALORS
RESULTAT = "Requête SQL exécutée avec succès."
SINON
SQLInfoGene ()
RESULTAT = "La requête a échoué. Code erreur : " + SQL.Erreur + " " +
SQL.MesErreur
FIN

SQLFerme ( "REQUETE" )

comme sous l'éditeur wdsql, après la connexion à la base de données,
jutiilse l'assistant de requête SQL qui m'affiche les tables et champs et paf
un message d'erreur

Quel ordre SQL faut-il lancer pour exécuter une procédure stockée de la base.
Normalement je doit avant toute chose appeler la procédure de
APISOFT_DOS_TEST.GET_APPEL_EXT.OPENSESSION(login,pass) avant d'écrire dans la
base mais je ne voit pas comment faire exécuter ça avec un sqlexec ou même un
hexecuterequetesql.
ça me renvoie une erreur invalid statement.



je doute que tu puisses lancer des PS depuis un accès ODBC.
Avec l'accès natif de Pcsoft, il y a déjà des problèmes avec les
paramètres de sorties (il y a eu, je ne sais plus si c'est tjrs pareil
en 9 ?).

Je te conseille d'utiliser pour ça oracle4wd l'accès alternatif (voire
site sqlmanagerx). Lui fonctionne très bien pour les PS.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Christophe Vaquier
OK, je vais l'essayer vu que je l'avais télécharger en dernier recours

"Roumegou Eric" a écrit dans le message de news:

Christophe Vaquier a pensé très fort :
Bonjour,

Dans le cadre d'un développement sur un logiciel commercial externe qui
utilise oracle comme base de données, cette dernière n'est accessible
qu'en lecture seule. Or, pour les besoin d'un client, je dois remplir
avec un petit programme externe (Le prog fait avec WinDev) la base de
données avec des données récupérées dans un format spécifique (le prog
fait office de parseur). Pour se faire, un package de procédure stockée
nommé GES_APPEL_EXT contient la liste des procédures appellables qui
permettent d'autrepasser la restriction d'écriture pour enregistrer des
données dans la base.

J'utilise ODBC puis comme source de données un pont access vers oracle
crée par le logiciel (on peut visionner la base de données oracle sous
access et y effectuer des requêtes en lecture seule avec ce pont)

Ci-dessous le code de connexion à la base sous WinDev :

NumConnexion est un entier = SQLConnecte ( "Pont Access - Oracle" ,
"INVITE" , "INVITE" , "APISOFT_DOS_TEST" , "ODBC" ) // oui, le log
commercial est édité par APISOFT ;)

SI NumConnexion ALORS
Info ( "Connexion à la base de données réussie" )
bConnect = Vrai
SINON
SQLInfoGene ()
Erreur ( "La connexion à la base de données APISOFT_DOS_TEST a
échoué." , "Code erreur : " + SQL.Erreur , SQL.MesErreur )
bConnect = Faux
SQLDéconnecte ()
FIN


jusque là tout marche. Le problème maintenant, une simple requête SQL
"select * from article" renvoie un code d'erreur.
que se soit en codé avec :

SI SQLExec ( "SELECT * FROM ARTICLE" , "REQUETE" ) ALORS
RESULTAT = "Requête SQL exécutée avec succès."
SINON
SQLInfoGene ()
RESULTAT = "La requête a échoué. Code erreur : " + SQL.Erreur + " " +
SQL.MesErreur
FIN

SQLFerme ( "REQUETE" )

comme sous l'éditeur wdsql, après la connexion à la base de données,
jutiilse l'assistant de requête SQL qui m'affiche les tables et champs et
paf un message d'erreur

Quel ordre SQL faut-il lancer pour exécuter une procédure stockée de la
base. Normalement je doit avant toute chose appeler la procédure de
APISOFT_DOS_TEST.GET_APPEL_EXT.OPENSESSION(login,pass) avant d'écrire
dans la base mais je ne voit pas comment faire exécuter ça avec un
sqlexec ou même un hexecuterequetesql.
ça me renvoie une erreur invalid statement.



je doute que tu puisses lancer des PS depuis un accès ODBC.
Avec l'accès natif de Pcsoft, il y a déjà des problèmes avec les
paramètres de sorties (il y a eu, je ne sais plus si c'est tjrs pareil en
9 ?).

Je te conseille d'utiliser pour ça oracle4wd l'accès alternatif (voire
site sqlmanagerx). Lui fonctionne très bien pour les PS.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)