Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
-
allexandr
- Posts: 4
- Joined: Tue 14 Dec 2010 14:11
Post
by allexandr » Tue 14 Dec 2010 14:34
Hello.
I try insert scaned image into oracle table (Direct connection)
If the file size to 1 MB everything goes well.
and if the amount of more 1MB application just hangs.
Code: Select all
fileName:= extractFilePath(Application.ExeName)+'scan.jpg';
UniStoredProc1.Active:= False;
UniStoredProc1.StoredProcName:= 'CRANDWRBLOB';
UniStoredProc1.Prepare;
UniStoredProc1.Params.ParamByName('b_loc').DataType:= ftOraBlob;
UniStoredProc1.Params.ParamByName('b_loc').LoadFromFile(fileName,ftOraBlob);
UniStoredProc1.Params.ParamByName('nID').AsInteger:= 999;
UniStoredProc1.Params.ParamByName('userID').AsInteger:= 777;
UniStoredProc1.Params.ParamByName('fname').AsString:= 'scan.jpg';
UniStoredProc1.Execute;
thanks in advance for the help
-
bork
- Devart Team
- Posts: 649
- Joined: Fri 12 Mar 2010 07:55
Post
by bork » Wed 15 Dec 2010 13:09
Hello
Please try the following code:
Code: Select all
begin
OraSession1.ExecSQL('create or replace PROCEDURE proc_btest_blob (in_param in blob, out_param out blob) ' + #13 +
'AS ' + #13 +
'BEGIN ' + #13 +
' out_param := in_param; ' + #13 +
'END;', []);
OraStoredProc1.Options.TemporaryLobUpdate := true;
OraStoredProc1.Prepare;
OraStoredProc1.ParamByName('in_param').AsOraBlob.LoadFromFile('error.bmp');
OraStoredProc1.ExecProc;
OraStoredProc1.ParamByName('out_param').AsOraBlob.SaveToFile('error2.bmp');
end;
-
allexandr
- Posts: 4
- Joined: Tue 14 Dec 2010 14:11
Post
by allexandr » Thu 16 Dec 2010 07:04
bork wrote:Hello
Please try the following code:
Code: Select all
begin
OraSession1.ExecSQL('create or replace PROCEDURE proc_btest_blob (in_param in blob, out_param out blob) ' + #13 +
'AS ' + #13 +
'BEGIN ' + #13 +
' out_param := in_param; ' + #13 +
'END;', []);
OraStoredProc1.Options.TemporaryLobUpdate := true;
OraStoredProc1.Prepare;
OraStoredProc1.ParamByName('in_param').AsOraBlob.LoadFromFile('error.bmp');
OraStoredProc1.ExecProc;
OraStoredProc1.ParamByName('out_param').AsOraBlob.SaveToFile('error2.bmp');
end;
Hello, i cant yse this code becous i use UniDac. not Odac.
-
bork
- Devart Team
- Posts: 649
- Joined: Fri 12 Mar 2010 07:55
Post
by bork » Thu 16 Dec 2010 07:48
Sorry. Try the following code for UniDAC:
Code: Select all
begin
UniConnection1.ExecSQL('create or replace PROCEDURE proc_btest_blob (in_param in blob, out_param out blob) ' + #13 +
'AS ' + #13 +
'BEGIN ' + #13 +
' out_param := in_param; ' + #13 +
'END;', []);
UniStoredProc1.SpecificOptions.Values['TemporaryLobUpdate'] := 'True';
UniStoredProc1.Prepare;
UniStoredProc1.ParamByName('in_param').AsBlobRef.LoadFromFile('error.bmp');
UniStoredProc1.ExecProc;
UniStoredProc1.ParamByName('out_param').AsBlobRef.SaveToFile('error2.bmp');
end;
-
allexandr
- Posts: 4
- Joined: Tue 14 Dec 2010 14:11
Post
by allexandr » Thu 16 Dec 2010 08:27
Thanks
Code: Select all
var
bstreem : TFileStream;
X: TBytes;
begin
UniConnection1.ExecSQL('create or replace PROCEDURE proc_btest_blob (in_param in blob, out_param out blob) ' + #13 +
'AS ' + #13 +
'BEGIN ' + #13 +
' out_param := in_param; ' + #13 +
'END;', []);
UniStoredProc1.StoredProcName:= 'proc_btest_blob';
UniStoredProc1.Prepare;
UniStoredProc1.ParamByName('in_param').LoadFromFile('big.jpg',ftOraBlob);
UniStoredProc1.ExecProc;
X:= UniStoredProc1.ParamByName('out_param').AsBlob;
Memo1.Lines.Add(IntToStr(Length(X)));
bstreem:= TFileStream.Create('error1.jpg',fmCreate);
bstreem.Write(X[0],Length(X));
bstreem.Free;
end;
all warks. The matter curves hands DB Admin
Bork Thank you so much