OVH Cloud OVH Cloud

procédures stockées oracle

3 réponses
Avatar
tjfromparis
Bonjour,

quelqu'un a t-il déjà manipulé des procédures stockées oracle avec vb.net ?

C'est quelque chose que je fais courrament en VB 6 mais j'ai quelques soucis
dans la création des paramètres de la procédures stockées, plus exactement
dans le typage de ceux ci...



Merci.

3 réponses

Avatar
Francois Muller
Bonjour

"tjfromparis" a écrit dans le message de news:
431f2456$0$20935$
quelqu'un a t-il déjà manipulé des procédures stockées oracle avec vb.net
?



Je le fais tous les jours avec C# .Net.. Ce doit être pareil avec VB.Net
;-))

C'est quelque chose que je fais courrament en VB 6 mais j'ai quelques
soucis dans la création des paramètres de la procédures stockées, plus
exactement dans le typage de ceux ci...



Quelle est ta question ?

F.
Avatar
tjfromparis
> Je le fais tous les jours avec C# .Net.. Ce doit être pareil avec VB.Net
;-))

C'est quelque chose que je fais courrament en VB 6 mais j'ai quelques
soucis dans la création des paramètres de la procédures stockées, plus
exactement dans le typage de ceux ci...



Quelle est ta question ?

F.






Voila mon code VB :

Dim conn As New OracleConnection(connString)
conn.Open()
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "PCK_APR_TRAVAUX.PRC_LST_CENTRE"
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add(New OracleParameter("inMCStyl",
OracleType.VarChar)).Value = "10"
cmd.Parameters.Add(New OracleParameter("Enreg_LstCentre ",
OracleType.Cursor)).Direction = ParameterDirection.Output

Dim rdr As OracleDataReader
rdr = cmd.ExecuteReader()
While (rdr.Read())
System.Diagnostics.Debug.Write(rdr.GetValue(0))
End While
rdr.Close()
conn.Close()


Le (debut) de la proc Oracle :

PROCEDURE PRC_LST_Centre (inMCStyl IN VARCHAR2,
Enreg_LstCentre OUT Type_Centre)
IS

BEGIN



Et le message lorsque j'execute le tout
Message d'erreur avec VB.NET:

Une exception non gérée du type 'System.Data.OracleClient.OracleException'
s'est produite dans system.data.oracleclient.dll
Informations supplémentaires : ORA-01036: numéro/nom de variable interdit



Fonctionne trés bien avec vb6 (et windev par ex).
Ce qui me perturbe c'est que la procédure stockée ci-dessus est utilisée
sans problème depuis un programme en VB6.

Peut etre est-ce à cause de la declaration de la taille du paramètre passé à
la proc ? (mais comment la declarer ?)




"Francois Muller" a écrit
dans le message de news: %
Bonjour

"tjfromparis" a écrit dans le message de news:
431f2456$0$20935$
quelqu'un a t-il déjà manipulé des procédures stockées oracle avec vb.net
?



Je le fais tous les jours avec C# .Net.. Ce doit être pareil avec VB.Net
;-))

C'est quelque chose que je fais courrament en VB 6 mais j'ai quelques
soucis dans la création des paramètres de la procédures stockées, plus
exactement dans le typage de ceux ci...



Quelle est ta question ?

F.




Avatar
Zoury
Salut ! :O)


Peut etre est-ce à cause de la declaration de la taille du paramètre passé
à la proc ? (mais comment la declarer ?)



Une des signatures de la méthode Add() te permet à peu près cela..
Dim sInMCStyl As String = "10"
cmd.Parameters.Add( _
New OracleParameter( _
"inMCStyl", _
OracleType.VarChar, _
sInMCStyl.Length)).Value = sInMCStyl

Personnelement, je préfères quelque chose comme ceci :
'***
Public Function CreerParmt(ByVal NomParmt As String, _
ByVal Direction As ParameterDirection, _
ByVal TypeOra As OracleType, _
ByVal Valeur As Object, _
ByVal Taille As Int32) As OracleParameter

Dim p As New OracleParameter
p.ParameterName = NomParmt
p.Direction = Direction
p.OracleType = TypeOra
p.Value = Valeur
p.Size = Taille
Return p

End Function
'***




Dim rdr As OracleDataReader
rdr = cmd.ExecuteReader()




Essai d'appeler OracleDataAdapter.Fill() à la place. Ton REF CURSOR devrait
être converti en DataSet (contenant un DataTable par REF CURSOR retourné)
automatiquement :

Ex (non testé) :
'**
Dim da As New OracleDataAdapter(cmd)
Dim ds As New DataSet
da.Fill(ds)
'**


--
Cordialement
Yanick
MVP pour Visual Basic