Ir al contenido


Foto

Borrar de cualquier tabla con un SP

stored procedure

  • Por favor identifícate para responder
1 respuesta en este tema

#1 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 26 mayo 2015 - 04:51

Hola, les dejo este SP que encontre, permite borrar una fila/s de cualquier tabla de nuestra base de datos.

Bastante util asi nos evitamos programar a lo loco.


php
  1. SET TERM ^ ;
  2.  
  3. CREATE OR ALTER PROCEDURE BORRA_FILA (
  4. tabla varchar(32),
  5. condicion varchar(1024))
  6. as
  7. declare variable comando varchar(1024);
  8. begin
  9. Comando = 'DELETE FROM ' || Tabla || IIF(CHAR_LENGTH(TRIM(Condicion)) > 0,
  10. ' WHERE ' || '' || Condicion || '', '');
  11.  
  12. EXECUTE STATEMENT :Comando;
  13.  
  14. SET TERM ; ^

asi se ejecuta:

 

 

          with modulo.borrar do
              begin
              close;
              sql.Clear;
              sql.Text:= 'EXECUTE PROCEDURE BORRA_FILA(:tabla,:condicion)';
              parambyname('tabla').AsString := 'COMPRASCOMPROBANTES';
              parambyname('condicion').AsString := 'id = '+dbgrid1.DataSource.DataSet.FieldByName('id').AsString;
              ExecSql;
              end;

 

 

¡Espero les sirva! (y)


Editado por Nikolas, 26 mayo 2015 - 04:51 .

  • 1

#2 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 02 junio 2015 - 04:26

Una vez oí la expresión SQL parser, por aquí, no recuerdo el hilo ni quien lo empezó.

Estas rutinas son cómodas y combiene hacerlas completas, es decir, no solo el DELETE.

Sé que lleva mucho trabajo, pero hay algunas empresas (conozco una) que tiene parsers para diferentes motores y lo eligen en un alto nivel, luego pasan parámetros a funciones, como tu ejemplo y lo hacen como si no utilizaran SQL.

Supongo que habrán detractores, como debe ser, pero un marco de trabajo bien hecho puede ahorrar tiempo.

 

Gracias,

Saludos.


  • 0




IP.Board spam blocked by CleanTalk.