2012-02-14 2 views
1

나는 다음과 같은 매개 변수의 유형과 절차 (포스트 그레스의 기능)을 저장 한 :Blob to String : Blob을 StoredProcedure의 문자열로 변환하는 방법 PostgreSQL?

Params[0] : result = ftBlob // postgresql function = text 
Params[1] : 1 = ftString 
Params[2] : 2 = ftInteger 
Params[3] : 3 = ftInteger 

내 코드는 다음과 같다 :

procedure TForm1.Button1Click(Sender: TObject); 
var 
    ResultStr: TResultStr; 
    BlobField: TBlobField; 
    bStream: TStream; 
    DataSet: TDataSet; 
    StoredProc: TSQLStoredProc; 
begin 
    sp01.Close; 
    sp01.Params[1].AsString := '2010/2011'; 
    sp01.Params[2].AsInteger := 2; 
    sp01.Params[3].AsInteger := 1; 
    sp01.ExecProc; 

    if sp01.ParamByName('result').Value.IsBlob then 
    begin 
    BlobField := StoredProc.ParamByName('result') as TBlobField; 
    bStream := sp01.CreateBlobStream(BlobField, bmRead); 
    try 
     bStream.Read(ResultStr,sizeof(TResultStr)); 
    finally 
     bStream.Free; 
    end; 
    end; 

    ShowMessage(ResultStr.Hasil); 
end; 

, 어떻게 결과를 얻을 싶어하는 질문 (BLOB)가 문자열이됩니까?

답변

1

나는 TResultString이 무엇인지 모르겠지만, 당신은 문자열을 수행 할 수 있습니다

var 
    BlobResult: string; // Changed to make clearer where changes were below 
begin 
    // Your other code here 

    if sp01.ParamByName('result').Value.IsBlob then 
    begin 
    BlobField := StoredProc.ParamByName('result') as TBlobField; 
    bStream := sp01.CreateBlobStream(BlobField, bmRead); 
    try 
     SetLength(BlobResult, bStream.Size);   // Note changes here 
     bStream.Read(BlobResult[1], bStream.Size); // and here 
    finally 
     bStream.Free; 
    end; 
    end; 
관련 문제