DBX Framework

Delphi

28/06/2011

Bom dia. Estou com uma dúvida: Como executar uma stored procedure em Oracle que retorna o ID (Do tipo In/Out), pelo DBX Framework. Segue o código:    procedure TForm2.Button1Click(Sender: TObject);
var
  aConnName: string;
  aDBXConn: TDBXConnection;
  aDBXTrans: TDBXTransaction;
  aCmnd: TDBXCommand;
  aReader: TDBXReader;
  aColCount: integer;
begin
  aDBXConn := TDBXConnectionFactory.GetConnectionFactory.GetConnection('csdb', 'virgo', 'virgo');
  if aDBXConn <> nil then
  begin
    // Write the all connection parameters
    memo1.Lines.Add('================= Connection Properties ============');
    memo1.Lines.Add(aDBXConn.ConnectionProperties.Properties.Text);
    memo1.Lines.Add('====================================================');
    memo1.Lines.Add('');     aCmnd := aDBXConn.CreateCommand;     // Start transaction
    aDBXTrans := aDBXConn.BeginTransaction(TDBXIsolations.ReadCommitted);     // Prepare and execute the SQL Statement
    aCmnd.CommandType := TDBXCommandTypes.DbxStoredProcedure;     aCmnd.Text := 'paises_iu(?,'+QuotedStr('TESTE')+','+QuotedStr('001')+',0)';
    aCmnd.Prepare;     {AQUI ELE NÃO ENCONTRA OS PARAMETERS QUE PASSEI NO .TEXT ACIMA "?"}     if aCmnd.Parameters.Count > 0 then
      aCmnd.Parameters.Parameter[0].Value.SetNull;     aReader := aCmnd.ExecuteUpdate; {AQUI ELE RETORNA ERRO PORQUE NÃO ENTENDE O "?"}     aColCount := aReader.ColumnCount;
    memo1.Lines.Add('Results from Query: ' + aCmnd.Text);
    memo1.Lines.Add('Number of Columns:  ' + IntToStr(aColCount));     while aReader.Next do
    begin
      memo1.Lines.Add(aReader.Value['id'].GetString);
    end;     memo1.Lines.Add('====================================================');
    memo1.Lines.Add('');     // Commit transaction
    aDBXConn.CommitFreeAndNil(aDBXTrans);     aReader.Free;
    aCmnd.Free;
    aDBXConn.Free;   end;
end;
George Bonespírito

George Bonespírito

Curtidas 0
POSTAR