SQL statement doesn’t return rows

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
natal
Posts: 5
Joined: Mon 08 Aug 2005 16:23

SQL statement doesn’t return rows

Post by natal » Mon 08 Aug 2005 16:48

Hi, I work with D6.Update2, component ODACnet 4.50.3.24 and Oracle 9i and I have the following problem: When I erase all the data of an OraQuery1, he appears me the following message:

Debugger Exception Notification
Project prueba.exe raised exception class Exception with message "SQL statement doesn't return rows". Process stopped. Step or use Run to it continued.


Subsequently in the OraQuery1 where I have erased the data, I cannot add any registration, until I don't make a consultation previously, this also happens me every time that I insert a registration.

My question is, if somebody can tell me because if I erase the OraQuery1 with the order "DELETE FROM & tablename1", or I insert a registration by means of "INSERT INTO… ", he appears me this exception.

I use the following code:

Code: Select all

procedure TfLiq.Btn_borrar_todoClick(Sender: TObject);
begin
  Try
    fdm.OraQuery1.SQL.Clear;
    fdm.tbLiq.Open;
    fdm.OraQuery1.SQL.Text := 'DELETE FROM &tablename1';
    fdm.OraQuery1.MacroByName('TableName1').Value := 'desarrollo.ta_liquidaciones';
    fdm.OraQuery1.execute;
  except
    on E : Exception do
      ShowMessage(E.ClassName+' mensaje del error : '+E.Message);
  end;

Code: Select all

procedure  TfLiq.grabaSQLliq;
begin
  if fDM.OraQuery1.active=false then fDM.OraQuery1.active:=true;
  fdm.tbLiq.Open;
  fdm.OraQuery1.SQL.clear;
  fdm.OraQuery1.SQL.Text:=
    'INSERT INTO &tablename'+#13+
    '(A_BAJA, A_APLAZADA, C_NUM_OFICINA, N_NUM_YEAR, N_NUM_ORDEN,'+#13+
    ' N_NUM_BIS, N_NUM_FRAC, C_NIF, N_VERSION, A_NOMBRE, A_DIRECCION,'+#13+
    ' A_MUNICIPIO, C_COD_POSTAL, A_PROVINCIA, C_NIF_REPRESENTANTE)'+#13+
   ' VALUES '+#13+
   '(:A_BAJA, :A_APLAZADA, :C_NUM_OFICINA, :N_NUM_YEAR, :N_NUM_ORDEN,'+#13+
   ' :N_NUM_BIS, :N_NUM_FRAC, :C_NIF, :N_VERSION, :A_NOMBRE, :A_DIRECCION,'+#13+
   ' :A_MUNICIPIO, :C_COD_POSTAL, :A_PROVINCIA, :C_NIF_REPRESENTANTE)'+#13+
   'RETURNING'+#13+   
   ' N_NUM_ORDEN'+#13+
   'INTO'+#13+
   ' :N_NUM_ORDEN';

       fdm.OraQuery1.MacroByName('TableName').Value := 'Desarrollo.ta_liquidaciones';

       fdm.OraQuery1.ParamByName('C_NUM_OFICINA').AsString := num_oficina.text;
       fdm.OraQuery1.ParamByName('N_NUM_YEAR').AsString    := Num_year.text;
       fdm.OraQuery1.ParamByName('N_NUM_ORDEN').AsString   := Num_Orden.Text; 
       fdm.OraQuery1.ParamByName('N_NUM_BIS').AsString     := Num_bis.text;
       fdm.OraQuery1.ParamByName('N_NUM_FRAC').AsString    := num_frac.text;
       fdm.OraQuery1.ParamByName('C_NIF').AsString         := Nif.text;
       fdm.OraQuery1.ParamByName('N_VERSION').AsString     := Version.text;
       fdm.OraQuery1.ParamByName('A_NOMBRE').AsString      := Nombre.text;
       fdm.OraQuery1.ParamByName('A_DIRECCION').AsString   := Direccion.text;
       fdm.OraQuery1.ParamByName('A_MUNICIPIO').AsString   := Municipio.text;
       fdm.OraQuery1.ParamByName('C_COD_POSTAL').AsString  := Cod_postal.text;
       fdm.OraQuery1.ParamByName('A_PROVINCIA').AsString   := Provincia.text;
       fdm.OraQuery1.ParamByName('C_NIF_REPRESENTANTE').AsString  := nif_r.text;

       fdm.OraQuery1.prepared;
       fdm.OraQuery1.execute;
end;
Best regards,

Paul
Posts: 725
Joined: Thu 28 Oct 2004 14:06

Post by Paul » Tue 09 Aug 2005 07:19

We cannot reproduce this problem with your code starting from a blank project. This error can happen if you call fdm.OraQuery1.Open and fdm.OraQuery1.SQL.Text is assigned with SQL text that does not return rows (such as DELETE... or INSERT...)

Guest

SQL statement doesn’t return rows

Post by Guest » Wed 10 Aug 2005 08:42

The problem has remained resolved, the solution has been to utilize the component of ODAC OraSQL for the operations that do not return rows, instead of a OraQuery.

Thanks by the aid.

Best regards,

Post Reply