
A példa működéséhez szükséges a ClearTables nevű adatbázis létrehozása, melyhez a mellékelt ClearAllTables.sql-t kell lefuttatnia.
A mellékelt példa futtatása előtt az ADOConnection1 ConnectionString property-t módosítsa úgy, hogy a ClearTables adatbázis elérhetővé váljon.
Egy tábla tartalmának törléséhez a TRUNCATE TABLE sql parancsot használhatjuk. A törlés naplózás nélkül történik, így a végrehajtása gyors. Most már csak egy olyan tárolt eljárást kell készítenünk, mely képes egy adatbázis tábláin egy ciklussal végigmenni és minden egyes táblára meghívni a TRUNCATE TABLE parancsot.
Ez a tárolt eljárás a ClearAllTables nevet kapja.
create procedure ClearAllTables
as begin
Szükségünk lesz két változóra.
declare @str varchar(255)
declare @name varchar(50)
Valamint egy átmeneti táblára, melyben tároljuk az adatbázisban létező táblák neveit.
create table #tables (
name varchar(30)
)
Ezt az átmeneti táblát feltöltjük egy select lekérdezéssel, melyet a sysobjects rendszer táblára futtatunk oly módon, hogy az eredményben a felhasználói (user) típusú táblák megnevezései szerepeljenek.
insert into #tables select name from sysobjects (nolock) where type = 'u'
set rowcount 1
Most már csak végig kell mennünk az átmeneti tábla összes során. Ehhez egy while ciklust használunk.
Lekérdezzük a @name változóba a tábla nevét, majd rögtön töröljük is ezt a sort a táblából.
select @name = name from #tables
delete from #tables if @@rowcount < 1 break
Létrehozunk egy sztringet, melyben szerepel a TRUNCATE TABLE utasítás a törlendő tábla megnevezésével együtt.
select @str = 'truncate table ' + @name
Legvégül az exec utasítással futtatjuk az imént összeállított sql parancsot.
A tárolt eljárás elkészítése után már csak használnunk kell azt. A használattal azonban legyünk körültekintőek, mert igen könnyen törölhetjük vele bármely adatbázisunk minden táblájának tartalmát.
A tárolt eljárás meghívása programból a hagyományos módon történik: egy TADOConnection komponenssel létrehozunk egy kapcsolatot az adatbázis szerverrel, majd a TADOStoredProc komponens segítségével futtatjuk a ClearAllTables tárolt eljárást.
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.Open;
ADOStoredProc1.ExecProc;
ADOConnection1.Close;
end;