Since I upgraded to Delphi 6 and doa 3.4.6.1 I get "Invalid variant type" errors on a procedure with more than one output parameter when using named parametermode. This was not a problem before.
I can't see i'm doing anything wrong, and it works on XP (my machine) but not on NT4/2000!
Example code:
procedure TForm1.Button2Click(Sender: TObject);
var
params, params2: Variant;
begin
{CREATE OR REPLACE PROCEDURE testvar1(pin NUMBER,pout OUT VARCHAR) IS
BEGIN
pout := pin;
END;}
packagesf.ParameterMode := pmNamed;
params := VarArrayCreate([1,4],varVariant);
params[1] := 'pin'; //row number
params[2] := 1;
params[3] := 'pout';
params[4] := parstring;
PackageSF.CallProcedure('testvar1', params);
edit1.Text := PackageSF.GetParameter( 1) ;
// works on all machines
{CREATE OR REPLACE PROCEDURE testvar(pin NUMBER,pout OUT VARCHAR,pout2 OUT varchar) IS
BEGIN
pout := pin;
END;}
params2 := VarArrayCreate([1,6],varVariant);
params2[1] := 'pin'; //row number
params2[2] := 1;
params2[3] := 'pout';
params2[4] := parstring;
params2[5] := 'pout2';
params2[6] := parstring;
PackageSF.CallProcedure('testvar', params2);
// invalid variant type on NT4/2000
// works fine on my XP development machine
edit1.Text := PackageSF.GetParameter( 1)
end;
Bug?