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
Leave A Comment?