Cautare specific cod in textul tuturor procedurilor de pe o baza

Am avut nevoie deseori sa gasesc o procedura in care stiam ca am scris un anumit cod, fie pentru a o modifica, fie pentru a copia ceva din ea si a-mi simplifica astfel munca.

Pentru aceasta am facut o procedura ce cauta in codul tuturor procedurilor din baza pe care este rulata o anumita bucata de cod care este data ca parametru.

Procedura are trei parametri:

1. @text1 – prima bucata de cod care este cautata in codul tuturor procedurilor (este obligatoriu ca acest prim parametru sa nu fie null)

2. @text2 – a doua bucata de cod ce este cautata in codul tuturor procedurilor (acest parametru poate fi null)

3. @Si – este un parametru care functioneaza DOAR cand al doilea parametru nu este null si , daca are valoarea 0, atunci procedura cauta in codul tuturor procedurilor o bucata de cod la fel ca primul parametru SAU ca al doilea,
iar daca are valoarea 1 atunci cauta in codul tuturor procedurilor o bucata de cod la fel ca prim,ul parametru SI o bucata de cod la fel ca al doilea parametru

Procedura nu tine cont de litere mici sau litere mari la parametri sau in cod, pt ca m-am gandit ca este foarte putin probabil sa stiu exact daca am scris acea portiune de cod cu litere mari, mici, sau combinate…

Ca atare am preferat sa nu o complic si cu un parametru de CASE SENSITIVE.

[mai mult...]

Cautare coloana in toate tabelele

Avem nevoie uneori sa cautam o coloana intr-o baza de date. Fie pt ca nu mai stim in ce tabela era acea coloana pe care ne-o amintim, fie ca vrem sa vedem daca acea coloana mai este folosita si in alte tabele fata de cea in care stim ca se afla.

Pentru aceasta am facut o procedura care are doi parametri @ColumnName si  @CaseSensitive.

Procedura returneaza , din baza curenta, toate tabelele care contin coloana data in primul parametru.
Dupa cum spuneam procedura are doi parametri:
1. @ColumnName = numele coloanei ce este cautat in toate tabelele din baza pe care se ruleaza procedura
2. @CaseSensitive = daca este 1 numele coloanei trebuie sa fie exact asa cum este scris, pe cand, daca este 0, atunci nu se tine cont de caractere mici sau mari

Precizare: al doilea parametru se poate folosi doar daca baza pe care se ruleaza procedura este setata ca fiind CS (Case sensitive). In cazul in care baza pe care se ruleaza procedura este setata CI (case insensitive) , indiferent daca la parametrul  @CaseSensitive se alege 0 sau 1 procedura nu va tine cont de felul in care e scris primul parametru.

 

[mai mult...]

Nume coloane dinamic

Am primit de cateva ori cerinta ca, intr-un raport facut in sql, sa afisez dinamic numele coloanelor, in functie de ce reprezinta ele.

Ca sa fie mai clar, dau un exemplu: mi s-a cerut sa afisez coloana dobanda intr-un raport de doua ori, odata cu numele anului curent si alta data cu numele anului precedent, si sa aduc in ele valorile aferente. Iar acest raport trebuia sa poata sa fie rulat in fiecare an si valorile si NUMELE COLOANELOR respective sa se schimbe in concordanta.

Daca aveti aceasta problema, am facut un exemplu de script ca sa va fie de ajutor in a intelege cum puteti face acest lucru.

 

[mai mult...]

Afisare data in format ddmmyyyy

M-am lovit deseori de situatia de a fi nevoit sa afisez , intr-un raport facut in sql, data in formatul ddmmyyyy, sau variante ale acestui format, de genul dd.mm.yyyy, dd/mm/yyyy, dd-mm-yyyy…

Ca atare am facut o functie care primeste ca prim parametru data, si ca parametru secundar un separator si afiseaza data in formatul ddmmyyyy cu separatorul ales intre zile luni si an.

[mai mult...]

Verificare setari server SQL

Pentru cazurile in care avem nevoie sa vedem ce fel de setari sunt pe un server de sql am facut o procedura care, rulata pe server, ne arata urmatoarele lucruri:

– daca instalarea e Case Sensitive sau nu
– calea unde sunt fisierele mdf si ldf aferente bazei Master
– calea unde este fisierul care inregistreaza erorile
– calea unde e instalat serverul de sql
– versiunea serverului de sql
– numele serverului
– editia
– ultimul service pack instalat
– daca e clustered sau nu
– versiunea motorului de sql
– collatiunea instalata

 

[mai mult...]

Verificare EOM

Pentru ca uneori avem nevoie sa verificam daca o data calendaristica este sau nu ultima zi din luna, am creat o functie care verifica acest lucru. (In ea se apeleaza o alta functie care transforma data intr-un format fara minute si secunde)

[mai mult...]

Transformarea unui string (sau o coloana varchar) intr-o lista (similar TRANSPOSE)

In cazul in care avem nevoie ca dintr-un string (adica o insiruire de caractere pe orizontala) delimitat (de un caracter sau un string repetitiv) sa facem o lista (adica sa punem pe verticala parti din stringul anterior, similar functiei TRANSPOSE din excel), am facut o functie care are doi parametri:
– primul parametru este un string (care poate sa fie o coloana dintr-o tabela)
– al doilea un string delimitator

Functia parseaza primul parametru si il imparte sub forma de lista in functie de parametrul numarul doi.

Pentru exemplificare, daca intr-o coloana am ceva de genul:
Dumitru Bogdan;Costache Cristian;Vasilescu Ionel;Mihaescu Georgel
atunci functia, apelata cu primul parametru ca fiind coloana respectiva si cu al doilea parametru ca fiind ‘;’ va returna lista de mai jos:

Id Data
1 Dumitru Bogdan
2 Costache Cristian
3 Vasilescu Ionel
4 Mihaescu Georgel

[mai mult...]

Formatare IBAN in grupuri de x caractere cu delimitator variabil

Am creat o functie care parseaza un string de caractere si il formateaza impartindu-l in grupuri de x caractere, iar aceste grupuri sunt delimitate de un string la alegere.

Este foarte folositoare la formatarea de IBAN-uri, pt ca diferite rapoarte cer formatarea IBAN-urilor in diferite feluri, si pentru a nu sta de fiecare data sa facem update in tabele fizice sau temporare, putem sa folosim functia de mai jos.

[mai mult...]

Transformarea unui text neuniform in text uniform scris

Intalnim deseori ca intr-o tabela sa gasim text, in special in campurile in care este permisa scrierea la liber, care este scris neuniform, in sensul ca ori incepe cu prima litera mica si continua cu restul mari (a fost apasat Caps-ul gresit), ori are litere mari pe la mijloc, tot din apasarea gresit a caps-ului, etc

 

Pentru a formata un astfel de text, am creat functia de mai jos:

 

[mai mult...]