|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| paramètres de connection accés natif Oracle. |
| Débuté par frederic.braga, 23 déc. 2004 16:09 - 3 réponses |
| |
| | | |
|
| |
| Posté le 23 décembre 2004 - 16:09 |
Bonjour, J'aimerai savoir s'il est possible de paramétrer un session oracle pour gerer les COMMIT ou aussi les ROLLBACK SEGMENT. Je pense que la solution est peut etre dans la commande HDECRITCONNEXION mais je n'ai pas trouvé la syntaxe appropriée.
Merci de votre aide |
| |
| |
| | | |
|
| | |
| |
| Posté le 27 décembre 2004 - 11:48 |
Le Commit et automatique. Pour gérer Commit ou Rollback dans Oracle, il faut utiliser le script natif oracle tel que l'exemple ci_dessous :
MaRequete est chaine = "Declare "+... "valtxt varchar2(5); "+... "Begin "+... "Update Monfichier "+... "Set Monchamp1 = "+Quote(Champ1)+", "+... " Monchamp2 = "+Quote(Champ2)+... " Where Macle = "+Quote(ChampCle)+";"+... " If sql%found then "+... " Commit; "+... " End if; "+... " End;" SI PAS SQLExec(MaRequete,"REQUPD") ALORS SQLErreur("REQUPD",MaRequete) FIN SQLFerme("REQUPD")
On peut aussi utiliser : SQLTransaction(SQLDébut) SQLTransaction(sqlFin) pour marquer le debut et la fin d'une transaction
et pour annuler une transaction par : SQLTransaction(sqlAnnule) |
| |
| |
| | | |
|
| | |
| |
| Posté le 27 décembre 2004 - 20:52 |
Bonjour,
> Le Commit et automatique.
Non ! il faut le définir en tant que tel pour la session active. Imaginez un peu les dégats avec de multiples updates et un arret en pleine session avec un "autocommit on" bonjour les dégats !
Pour gérer Commit ou Rollback dans Oracle, il faut utiliser le script natif oracle tel que l'exemple ci_dessous :
MaRequete est chaine = "Declare "+... "valtxt varchar2(5); "+... "Begin "+... "Update Monfichier "+... "Set Monchamp1 = "+Quote(Champ1)+", "+... " Monchamp2 = "+Quote(Champ2)+... " Where Macle = "+Quote(ChampCle)+";"+... " If sql%found then "+... " Commit; "+... " End if; "+... " End;" SI PAS SQLExec(MaRequete,"REQUPD") ALORS SQLErreur("REQUPD",MaRequete) FIN SQLFerme("REQUPD")
Pour moi si vous partez dans l'écriture de bloc pl/sql anonyme (votre exemple), autant aller jq au bout ! utilisez des procédures stockées pour tous vos ordres de communication avec la base. L'avantage non négligeable c'est que tout est géré au niveau de la base. Code unique, encapsulation des fonctions, les développeurs ne voientt plus que des procédures PL/SQL : gestion de l'intégrité (au niveau sécurité) de la base élevée.
Pöur info, de tête le sql%found n'est valorisé que pour les ordres select je crois, c'est le sql%rowcount qui est valorisée dans un update.
On peut aussi utiliser : SQLTransaction(SQLDébut) SQLTransaction(sqlFin) pour marquer le debut et la fin d'une transaction
et pour annuler une transaction par : SQLTransaction(sqlAnnule)
Pour revenir à la question initiale, Frédéric, peux-tu expliquer ton besoin car la réponse de Paul Le concerne la gestion commit/rollback mais l'utilisation d'un RBS spécialisé (utilisation spécifique d'un RBS au lieu des 4 RBS standard) dans une session exige une réponse d'un autre ordre.
Bien Cordialement,
-- Emmanuel Lecoester |
| |
| |
| | | |
|
| | |
| |
| Posté le 28 décembre 2004 - 11:36 |
En reponse à Emmanuel Lecoester , merci de corriger des erreurs que j'ai commis. J'utilise les 2, bloc anonyme et procedure stocke en fonction des besoins. En fait je n'utilise pas commit ou rollback etant donne que dans une session elle est automatiquement en commit. L'avantage du bloc anonyme est que je peux dans le cas d'un update de prendre les champs qui ont ete changes or dans une procedure stockee les champs sont figes, d'autre part je ne vois pas de difference entre une procedure stockee et un bloc anonyme car la base traite de la meme facon c'est à dire elle fait le meme controle avant de valider la session.
Je ne sais pas si ca existe sous oracle pour valider ou annuler un bloc entier comme dans sqlserver c'est à dire : declarer une transaction, valider ou annuler cette transaction.
TRANSACTION nomtransaction creation mise a jour etc... suivant les resultats on peut valider par COMMIT TRANSACTION nomtransaction ou annuler par ROLLBACK TRANSACTION nomtransaction
Est ce que sous oracle le commit ou rollback en fin de bloc valide ou annule le bloc entier, je n'ai pas encore fait l'essai.
Bien Cordialement. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|