Stored Proc & Oracle - please help!
andru123
Date: 10/28/03
- Next message: arnold: "Re: oracle+package function"
- Previous message: Pascal Schmidt-Volkmar: "Re: grabbing max(value) of a string"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 28 Oct 2003 11:49:00 +0100
Please Help, I can not call Stored Procedurte using ADO!
The problem is that it says that parameters are not correct or type is not
correct, but it does not say which parameters!!!!
I dont know what to do, I tried every combinations (ftString, ftMemo, ....)
If I dont specify OUT parameters, it does not work. If I specify OUT
parameters, it does not work. OMG :.(
:(((((((((((
------------------- Stored Procedure --------------------
CREATE OR REPLACE FUNCTION kiw_imt_del_proc
(p_oid NUMBER
,p_h_trans_van DATE
,p_h_geldig_van DATE
,p_h_gebruiker VARCHAR2
,vv_result OUT NUMBER
,vv_sqlerror OUT NUMBER
,vv_isamerror OUT NUMBER
,vv_errordata OUT VARCHAR2
)
RETURN NUMBER IS
vv_h_geldig_van DATE;
vv_oid INTEGER;
vv_aantal INTEGER;
wordt_gebruikt EXCEPTION;
kan_niet_wissen EXCEPTION;
BEGIN
vv_result := 1;
DELETE
FROM kiw_imt
WHERE oid = p_oid
;
vv_isamerror := 0;
vv_sqlerror := 0;
vv_errordata :='';
RETURN vv_result;
EXCEPTION
WHEN wordt_gebruikt THEN
vv_sqlerror := -96;
vv_errordata:= SQLERRM;
vv_result:= -1;
RETURN -1;
WHEN OTHERS THEN
UPDATE kiw_imt
SET h_actief='w'
WHERE oid = p_oid;
vv_result:= -1;
vv_sqlerror:= SQLCODE;
RETURN -1;
END kiw_imt_del_proc;
/
GRANT EXECUTE ON kiw_imt_del_proc TO PUBLIC;
-------------------------------------------------------------
--------------------------------------------------------------
procedure TfrmWocasOut.Button1Click(Sender: TObject);
Var
Params : Variant;
begin
Params := VarArrayCreate( [0,4], VarVariant);
Params[0] := VarArrayOf(['p_oid', ftInteger, pdInput, 0, 5]);
Params[1] := VarArrayOf(['p_h_trans_van', ftDateTime, pdInput, 0, Now()]);
Params[2] := VarArrayOf(['p_h_geldig_van', ftDateTime, pdInput, 0,
Now()]);
Params[3] := VarArrayOf(['p_h_gebruiker', ftString, pdInput, 2, 'me']);
Params[4] := VarArrayOf(['p_h_actief', ftString, pdInput, 1, 'w']);
//Params[5] := VarArrayOf(['vv_result', ftInteger, pdOutput, 1, 0]);
//Params[6] := VarArrayOf(['vv_sqlerror', ftInteger, pdOutput, 1, 0]);
//Params[7] := VarArrayOf(['vv_isamerror', ftInteger, pdOutput, 1, 0]);
//Params[8] := VarArrayOf(['vv_errordata', ftVariant, pdOutput, 4000,
'aaa']);
// don't specify the OUT parameters, this is done by Delphi automagically
ExecuteStoredProc (self.ADODataSet1, 'kiw_imt_del_proc', Params,
self.ADOCommand1);
VarClear(Params);
end;
procedure ExecuteStoredProc(Query : TADODataSet; StoredProc: String;
var Params: Variant; SQLCommand : TADOCommand);
Var i : Integer;
begin
Query.Close;
Query.CommandType := cmdStoredProc;
Query.CommandText := StoredProc;
Query.Parameters.Clear;
For i := VarArrayLowBound (Params, 1) To VarArrayHighBound (Params, 1) Do
Begin
Query.Parameters.CreateParameter(Params[i][0], Params[i][1],
Params[i][2], Params [i][3], Null);
Query.Parameters.ParamByName(Params[i][0]).Value := Params[i][4];
End;
// Workaround for Null Result
SQLCommand.CommandText := StoredProc;
SQLCommand.CommandType := cmdStoredProc;
SQLCommand.Parameters.Assign(Query.Parameters);
Try
Query.Recordset := SQLCommand.Execute;
Except
Query.Recordset := Nil;
raise;
End;
end;
----------------------------------------------------------------------------
---
- Next message: arnold: "Re: oracle+package function"
- Previous message: Pascal Schmidt-Volkmar: "Re: grabbing max(value) of a string"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]