Salut a tous les développeurs et développeuses, Aujourd'hui je vous propose un p'tit jeu, le 'TROUVER L'ERREUR'... tout le monde connait le principe, normalement c avec deux dessins mais moi je vous corse un peu le tout : c'est d'un coté une procédure stocké et de l'autre un module VB qui doit l'executer, le probleme c'est qu'une erreur s'est glissé dans le code et si bien glissées que meme moi je ne la voi pas IoI
Donc je vous note tout le code mis en cause et le premier qui trouve a gagné ! IoI
Ce jeu est sans obligation d'achat et autant de tentative voulu par foyer seront accordées. je teste toutes les solutions et vous dirait si elles sont ok !
Bon courage a tous ! IoI, c'est kan meme plus drole de travailler dans la bonne humeur ;-)
**************************************************
la procédure stocké
**************************************************
Autant le code vb peu etre ré-écrit si besoin, autant la prod stock ne peu pas etre modifié.
PROCEDURE InsertIndiceValues (symbolIndice in tc712_indices_prices.SYMBOL%TYPE,
applyableDate in tc713_indices_values.APPLYABLE_DATE%TYPE,
value tc713_indices_values.VALUE%TYPE,
error_code out INTEGER, error_msg out VARCHAR2)
IS
numValue number;
indicePriceID tc712_indices_prices.P_INDEX_PRICE_ID%TYPE;
BEGIN
select
P_INDEX_PRICE_ID into indicePriceID
from
TC712_INDICES_PRICES where SYMBOL = symbolIndice;
select
count(P_INDICE_PRICE_VALUE_ID) into numValue
from
tc713_indices_values tc713
where
tc713.F_INDICE_PRICE_ID = indicePriceID
and tc713.APPLYABLE_DATE = applyableDate;
IF numValue = 0 THEN
INSERT INTO tc713_indices_values (F_INDICE_PRICE_ID, APPLYABLE_DATE, VALUE)
VALUES (indicePriceID, applyableDate, value);
COMMIT;
END IF;
error_code := SQLCODE;
error_msg := SQLERRM;
EXCEPTION
WHEN OTHERS THEN
error_code := SQLCODE;
error_msg := SQLERRM;
ROLLBACK;
END;
**************************************************
l'apelle a la prod stock
**************************************************
La connection a la base est deja faite, ouverte et active (ca j'en suis sur!)
La base est une base oracle 9.0.1.
les parametres:
sIndice ="'PNXT'"
sDateHeure = "to_date('01/01/2003','DD-MM-YYYY')
sIndice = "22.001"
la fonction:
Public Function ExeStorProd(ByRef sIndice As String, ByRef sDateHeure As String, ByRef sIndice As String) As Boolean
On Error GoTo ErrorHandling:
Dim iCodeErrorOracle As Integer
iCodeErrorOracle = 0
Dim sDescErrorOracle As String
sDescErrorOracle = ""
' Create parameters objects
Dim params As ADODB.Parameters
Dim param As ADODB.Parameter
' Create command objects
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
' Set command properties
With cmd
Set .ActiveConnection = mcnServerConnection
.CommandText = "MNGT_SCADAENERGY.INSERTINDICEVALUES"
.CommandType = adCmdStoredProc
Set params = .Parameters
End With
MsgBox "fin du with cmd"
' Define stored procedure params and append to command.
params.Append cmd.CreateParameter("@symbolIndice", adVarChar, adParamInput, 20, sIndice)
params.Append cmd.CreateParameter("@applyableDate", dbDate, adParamInput, 0, sDateHeure)
params.Append cmd.CreateParameter("@value", dbDouble, adParamInput, 20, sValue)
params.Append cmd.CreateParameter("@error_code", adInteger, adParamInputOutput, 0)
params.Append cmd.CreateParameter("@error_msg", adVarChar, adParamInputOutput, 20)
' Execute the command
cmd.Execute , ,adExecuteNoRecords
' Retrieve stored procedure return value and output parameters
Dim lReturn As Long
iCodeErrorOracle = params("@error_code")
sDescErrorOracle = params("@error_msg")
Set cmd = Nothing
**************************************************
Aide.... Même vous vous y avez droit !
**************************************************
les paramètres sont corectments passés a la prod stock (j'ai pas d'erreures)
L'erreur qui me fait passer dans le Error_Handling est au moment de la ligne :
cmd.Execute , ,adExecuteNoRecords
et l'errror oracle:
Binding information is invalid.
Bonne chance a tous, et j'espere que quelqu'un trouvera, car moi je ne sais vraiment plus :::::!
En tout cas merci a tous ceux qui joue et aux autres aussi !