簡體   English   中英

獲取存儲過程的 OUT BLOB 類型參數作為 TStream

[英]Get an OUT BLOB type Parameter of a Stored Procedure as TStream

我的 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

使用AsBlob 它將 blob 作為字節數組返回。 您可以直接使用它,或者如果您需要通過流訪問數據,請使用TBytesStream

Stream := TBytesStream.Create(Param.AsBlob);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM