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

[OT][OTL4WD] Nouvelle version actuellement en test

1 réponse
Avatar
elecoest
Bonjour,

C'est avec grand plaisir que je peux vous annoncer que nous venons de
faire un bon en avant avec la version de OTL4WD en cours de tests.

Outre toutes les fonctionnalit=E9s d=E9j=E0 existantes vous pouvez g=E9rer
les binds variables de type IN, OUT, INOUT de type chaine de
caract=E8res, entier et double. Un peu ce que fait Oracle4WD me direz
vous... Oui mais l=E0 ne s'arr=EAte pas l'innovation avec OTL4WD ! On
peut aussi d=E9clarer des binds variables de type "Referenced Cursor".
La question nous avait =E9t=E9 soumise par Bernard il y a peu. On
ex=E9cute une proc=E9dure stock=E9e qui renvoie 2 curseurs autonomes
(cette fa=E7on de faire se retrouve de plus en plus dans les milieux
Oracle s=E9curis=E9s). Comment faire ?

Voici un d=E9but de solution avec OTL4WD.

On d=E9clare nos deux curseurs :

[code]
// fermeture au pr=E9alable des donn=E9es de travail
OTL4WD:OTLCloseBinds()
// referenced cursor 1 de type OUT
OTL4WD:OTLDefBind(0,"cur1","cur1",OTL4WD:ORACLE_VAROUT,
OTL4WD:ORACLE_TYPEREF)
// referenced cursor 2 de type OUT
OTL4WD:OTLDefBind(1,"cur2","cur2",OTL4WD:ORACLE_VAROUT,
OTL4WD:ORACLE_TYPEREF)
[/code]

On execute notre proc=E9dure stock=E9e :

[code]
// appel fourni par le DBA
retCode =3D OTL4WD:OTLExecPS("begin "+...
" pkg1.prc1(:cur1,:cur2); "+...
"end ; ")
[/code]

On amorce le parcours du curseur 1 :

[code]
retCode =3D OTL4WD:OTLExec(":cur1")
[/code]

Et on le parcours :

[code]
TANTQUE (OTL4WD:OTLFetchCur(":cur1"))
TableAjoute("TABLE2", OTL4WD:OTLLitColCur(":cur1", 1) + TAB +
OTL4WD:OTLLitColCur(":cur1", 2))
FIN
[/code]

Vous l'aurez compris pour le deuxi=E8me curseur c'est identique :
[code]
retCode =3D OTL4WD:OTLExec(":cur2")
TableSupprimeTout("TABLE2")
TANTQUE (OTL4WD:OTLFetchCur(":cur2"))
TableAjoute("TABLE2", OTL4WD:OTLLitColCur(":cur2", 1) + TAB +
OTL4WD:OTLLitColCur(":cur2", 2))
FIN
[/code]

Pour faciliter la vie du d=E9veloppeur les m=E9thodes pour retrouver le
type d'une colonne, le nom de celle-ci, le nombre de colonnes dans le
curseur sont disponibles.

Vous voulez en savoir plus ? une seule adresse : www.sqlmanagerx.com
pour la derni=E8re version stable ou contact (sur le site) pour la
version actuellement en tests internes.

A tr=E8s bient=F4t.

--
Emmanuel Lecoester

1 réponse

Avatar
[Bernard Vessiot]
avait prétendu :
Bonjour,

C'est avec grand plaisir que je peux vous annoncer que nous venons de
faire un bon en avant avec la version de OTL4WD en cours de tests.

Outre toutes les fonctionnalités déjà existantes vous pouvez gérer
les binds variables de type IN, OUT, INOUT de type chaine de
caractères, entier et double. Un peu ce que fait Oracle4WD me direz
vous... Oui mais là ne s'arrête pas l'innovation avec OTL4WD ! On
peut aussi déclarer des binds variables de type "Referenced Cursor".
La question nous avait été soumise par Bernard il y a peu. On
exécute une procédure stockée qui renvoie 2 curseurs autonomes
(cette façon de faire se retrouve de plus en plus dans les milieux
Oracle sécurisés). Comment faire ?

Voici un début de solution avec OTL4WD.

On déclare nos deux curseurs :

[code]
// fermeture au préalable des données de travail
OTL4WD:OTLCloseBinds()
// referenced cursor 1 de type OUT
OTL4WD:OTLDefBind(0,"cur1","cur1",OTL4WD:ORACLE_VAROUT,
OTL4WD:ORACLE_TYPEREF)
// referenced cursor 2 de type OUT
OTL4WD:OTLDefBind(1,"cur2","cur2",OTL4WD:ORACLE_VAROUT,
OTL4WD:ORACLE_TYPEREF)
[/code]

On execute notre procédure stockée :

[code]
// appel fourni par le DBA
retCode = OTL4WD:OTLExecPS("begin "+...
" pkg1.prc1(:cur1,:cur2); "+...
"end ; ")
[/code]

On amorce le parcours du curseur 1 :

[code]
retCode = OTL4WD:OTLExec(":cur1")
[/code]

Et on le parcours :

[code]
TANTQUE (OTL4WD:OTLFetchCur(":cur1"))
TableAjoute("TABLE2", OTL4WD:OTLLitColCur(":cur1", 1) + TAB +
OTL4WD:OTLLitColCur(":cur1", 2))
FIN
[/code]

Vous l'aurez compris pour le deuxième curseur c'est identique :
[code]
retCode = OTL4WD:OTLExec(":cur2")
TableSupprimeTout("TABLE2")
TANTQUE (OTL4WD:OTLFetchCur(":cur2"))
TableAjoute("TABLE2", OTL4WD:OTLLitColCur(":cur2", 1) + TAB +
OTL4WD:OTLLitColCur(":cur2", 2))
FIN
[/code]

Pour faciliter la vie du développeur les méthodes pour retrouver le
type d'une colonne, le nom de celle-ci, le nombre de colonnes dans le
curseur sont disponibles.

Vous voulez en savoir plus ? une seule adresse : www.sqlmanagerx.com
pour la dernière version stable ou contact (sur le site) pour la
version actuellement en tests internes.

A très bientôt.



salut manu !
ouahhhh ! ça pour une nouvelle...!!! :D :D :D
je vasi tester cela le plus rapidement possible...
merci encore !
@+++

--
[Bernard Vessiot]
34980 Saint Gély du Fesc