docs: planurile, proiectarile si rapoartele de lucru intra in versionare
Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git, nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de cercetare pe care se sprijina modificarile din cod. O stergere acolo era definitiva. Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele fisierelor de test la care se refereau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
This commit is contained in:
74
docs/verificare_vfacturi.sql
Normal file
74
docs/verificare_vfacturi.sql
Normal file
@@ -0,0 +1,74 @@
|
||||
-- verificare_vfacturi.sql
|
||||
-- Compara valoare calculata (FACT_VFACTURI) cu valoare denormalizata (FACT_VFACTURI2)
|
||||
-- pentru fiecare coloana comuna, pe toate facturile din schema curenta.
|
||||
-- Testul de regresie al planului #8 (docs\plan_08_denormalizare_vanzari.md).
|
||||
--
|
||||
-- Rulare (schema de dezvoltare, conform COMUN\docs\scripturi-migrare-db.md):
|
||||
-- & 'D:\ROA\instantclient_19_18\sqlplus.exe' -L -S 'MARIUSM_AUTO/<parola>@ROA_CENTRAL' '@verificare_vfacturi.sql'
|
||||
--
|
||||
-- Rezultatul: o linie per coloana cu diferente, in ordinea descrescatoare a numarului de facturi.
|
||||
-- Coloanele identice nu se afiseaza.
|
||||
|
||||
set serveroutput on size unlimited
|
||||
set linesize 200 pagesize 0 feedback off heading off verify off
|
||||
|
||||
declare
|
||||
lcSel clob := 'select ';
|
||||
lcCol varchar2(30);
|
||||
lnPrim number := 1;
|
||||
lcRez varchar2(32767);
|
||||
type t_nume is table of varchar2(30);
|
||||
laNume t_nume := t_nume();
|
||||
begin
|
||||
for c in (select c.column_name
|
||||
from all_tab_columns c
|
||||
where c.owner = user
|
||||
and c.table_name = 'FACT_VFACTURI'
|
||||
and c.data_type in ('NUMBER','VARCHAR2','CHAR','DATE')
|
||||
and c.column_name <> 'ID_VANZARE'
|
||||
and exists (select 1 from all_tab_columns d
|
||||
where d.owner = c.owner and d.table_name = 'FACT_VFACTURI2'
|
||||
and d.column_name = c.column_name)
|
||||
order by c.column_id)
|
||||
loop
|
||||
lcCol := c.column_name;
|
||||
laNume.extend; laNume(laNume.count) := lcCol;
|
||||
if lnPrim = 0 then lcSel := lcSel || q'[||','||]'; end if;
|
||||
-- decode trateaza NULL = NULL ca egalitate
|
||||
lcSel := lcSel || 'sum(decode(a.'||lcCol||',b.'||lcCol||',0,1))';
|
||||
lnPrim := 0;
|
||||
end loop;
|
||||
|
||||
lcSel := lcSel || ' from fact_vfacturi a join fact_vfacturi2 b on a.id_vanzare = b.id_vanzare';
|
||||
|
||||
execute immediate lcSel into lcRez;
|
||||
|
||||
dbms_output.put_line('--- coloane cu diferente intre FACT_VFACTURI (calculat) si FACT_VFACTURI2 (denormalizat) ---');
|
||||
declare
|
||||
lnPoz number := 1;
|
||||
lnVirg number;
|
||||
lcVal varchar2(50);
|
||||
lnTotal number := 0;
|
||||
begin
|
||||
for i in 1 .. laNume.count loop
|
||||
lnVirg := instr(lcRez, ',', lnPoz);
|
||||
if lnVirg = 0 then
|
||||
lcVal := substr(lcRez, lnPoz);
|
||||
else
|
||||
lcVal := substr(lcRez, lnPoz, lnVirg - lnPoz);
|
||||
lnPoz := lnVirg + 1;
|
||||
end if;
|
||||
if to_number(lcVal) > 0 then
|
||||
dbms_output.put_line(lpad(lcVal, 8) || ' ' || laNume(i));
|
||||
lnTotal := lnTotal + 1;
|
||||
end if;
|
||||
end loop;
|
||||
dbms_output.put_line('--- ' || lnTotal || ' coloane diferite din ' || laNume.count || ' comparate ---');
|
||||
end;
|
||||
end;
|
||||
/
|
||||
|
||||
select '--- perechi comparate: ' || count(*) || ' ---'
|
||||
from fact_vfacturi a join fact_vfacturi2 b on a.id_vanzare = b.id_vanzare;
|
||||
|
||||
exit
|
||||
Reference in New Issue
Block a user