我的MySQL数据库上有一个存储过程,其中2个OUT参数为Blob类型
我想用UniDAC的SP组件将它们的值作为TStream,我已经尝试过这段代码进行测试:
SP := TUniStoredProc.Create(nil);
M := TMemoryStream.Create;
try
try
SP.StoredProcName := 'user_getpic';
SP.PrepareSQL(False);
SP.Params.ParamByName('fUID').AsString := '...';
SP.Params.ParamByName('fDiceCode').AsString := '...';
...
SP.ExecProc;
M.LoadFromStream(SP.Params.ParamByName('fUPic').AsStream);
except
on E:EXception do
begin
ShowMessage('Error : ' + E.Message);
end;
end;
finally
SP.Free;
M.Free;
end;
问题是Param.AsStream返回Nil但是Param.AsBlob不是Nil
当我在MySQL上直接调用这个SP时,fUPic有blob数据,SP上没有问题
我已经尝试过SP.CreateBlobStream()但是我应该将它作为第一个参数传递给TField?!
我已经尝试从Param.AsBlob投射到TBlobStream,但没有机会!
我想知道如何将OUT blob参数作为TStream?
我正在使用Delphi XE6和UniDAC 6.1.4
答案 0 :(得分:1)
使用AsBlob
。它将blob作为字节数组返回。您可以直接使用它,或者如果您需要通过流访问数据,请使用TBytesStream
。
Stream := TBytesStream.Create(Param.AsBlob);