Exécution d'une procédrue stockée ORACLE dont un des paramètres est un curseur
cedricbuzenot
Messages postés2Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 6 décembre 2005
-
6 déc. 2005 à 11:57
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 2010
-
6 déc. 2005 à 14:28
Bonjour,
Je souhaite exécuter une procédrue stockée ORACLE :
procedure dtm_inn_princ_ps ( ainPrdlvlNumber in number,
ainPrdLvlId in number,
aocurassprd in out Curinnp,
aonCodRet out number,
aonSqlErr out number,
aocSqlErrMSg out varchar2 )
le 3ème paramètre (aocurassprd) est un curseur, et c'est là tout le problème.
J'ai déjà utilisé des procédures stockées sans curseur et cela fonctionne très bien. Mais avec un curseur, je n'arrive même pas à exécuter la proc.
Voici mon code VB:
Public Function Get_principal_innerpack_ID(PRD_LVL_NUMBER As String) As Long
Dim Cmd_Execution As ADODB.Command
Dim tmp_rst As Recordset
Set Cmd_Execution = New ADODB.Command
Cmd_Execution.ActiveConnection = cnx
Cmd_Execution.CommandType = adCmdStoredProc
Cmd_Execution.CommandText = "dtm_fct_prd.dtm_inn_princ_ps"
Cmd_Execution.CommandTimeout = 15
Erreur -2147217872 :
OAR-06550 Numéro ou types d'arguments éronés dans appel à 'dtm_inn_princ_ps'
J'ai bien essayé d'ajouter le troisième paramètre :
Set tmp_rst = New Recordset
Cmd_Execution.Parameters.Append Cmd_Execution.CreateParameter("Curinnp", adChapter, adParamInputOutput, 4, tmp_rst)
Mais là, j'ai une autre erreur :
Erreur -2147217912 Type de nom non valide
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 6 déc. 2005 à 13:37
salut,
vire le cmd.execute
et remplace le par
Dim rs as recordset
set rs = new recordset
rs.open cmd ' tu peux aussi passer les paramètres relatif au curseur (static, dynamique) et de lock (read only, ...)
Set tmp_rst = New Recordset
tmp_rst.Open Cmd_Execution
et j'ai toujours le même erreur -2147217872 :
OAR-06550 Numéro ou types d'arguments éronés dans appel à 'dtm_inn_princ_ps'
Mais je pense que c'est parce que je n'initialise pas le troisième paramètre de la prcédure SQL en in/out. Je vais voir si je peux faire modifer ce paramètre en out uniquement.