Cautare specific cod in textul tuturor procedurilor de pe o baza

Configurare noua (How To)

Situatie

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.

Solutie

CREATE PROCEDURE  [dbo].[BD_FindProcContains_prc]
@text1 varchar(max),
@text2 varchar(max) = null,
@Si bit = 0
as

if @text1 is null
begin
raiserror (‘Nu se poate cauta stringul NULL in textul unei proceduri!!!!’,16,1)
end

if @text2 is null and @Si = 1
begin
raiserror (‘Nu se poate cauta stringul NULL in textul unei proceduri!!!!’,16,1)
end

if @text1 is not null and @text2 is null and @Si = 0
begin
select distinct object_name(id)
from sys.syscomments
where upper(text) like upper(@text1)
end

if @text1 is not null and @text2 is not null and @Si = 1
begin
select distinct object_name(id)
from sys.syscomments
where upper(text) like upper(@text1) AND upper(text) like upper(@text2)
end

if @text1 is not null and @text2 is not null and @Si = 0
begin
select distinct object_name(id)
from sys.syscomments
where upper(text) like upper(@text1) OR upper(text) like upper(@text2)
end

Tip solutie

Permanent
Etichetare:

Voteaza

(12 din 24 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?