Fórum DBX Framework #403893
28/06/2011
0
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;
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)