Avatar billede jytte Nybegynder
11. januar 2011 - 17:41 Der er 5 kommentarer og
1 løsning

debug stored procedure

Jeg har en stump stored procedure kode som jeg plejer at udføre ved at paste den ind i min query-analyser.

Og det plejer at virke, men nu er det holdt op med at virke - der bliver i hvert fald ikke udført noget kode.

Da jeg ikke kan finde fejlen (de enkelte sql-sætninger virker enkeltvis) tænkte jeg om der ikke var nogen herinde der viste hvordan man debugger i en stored procedure? - eller om man på en eller anden måde kan skrive noget så man kan se hvad ens variabler indeholder undervej?
Avatar billede Syska Mester
11. januar 2011 - 17:59 #1
PRINT @Variable;

Så kommer det i hvert fald i output vinduet.

Sådan gør jeg ... :-)

Men hvad er det som ikke virker ...

mvh
Avatar billede jytte Nybegynder
11. januar 2011 - 18:19 #2
Jeg ved ikke lige hvad du kalder "output"-vinduet i query-analyser...

Min kode ser ca. sådan ud

declare @UL varchar(8);
declare @SI varchar(20);
DECLARE ul_list CURSOR
FOR select a, b  from tabel1 INNER JOIN tabel2 ON ... INNER JOIN tabel3 ON ... where ... IN ('XXX')
open ul_list
fetch next from ul_list into @UL, @SI
WHILE @@FETCH_STATUS = 0
BEGIN --while

if @SI='XXX' 
begin -- if
insert into TABEL4(...) values(@UL,...,@SI);
insert into tabel5(...) VALUES(@ul,...,@SI);
end--if
  fetch next from ul_list into @UL, @SI
END --while
--for
Close ul_list
DEALLOCATE ul_list

Mine inserts bliver ikke udført, men hvis jeg nøjes med at køre en af insertsætningerne (med værdier i @UL og @SI) virker det.

Der er altså noget der gør at min while ikke bliver udført.

Så jeg kunne godt tænke mig f.eks at vide om ul_list var tom før min whilesætning begyndte -- kan man finde ud af det?
Avatar billede jytte Nybegynder
11. januar 2011 - 18:27 #3
UNDSKYLD jeg overså helt din første linje:

PRINT @Variable;

Jeg har nu brugt den og fundet min fejl (en ændring i databasen)

Tak for hjælpen (husk at læg et svar)
Avatar billede Syska Mester
11. januar 2011 - 18:48 #4
svar.

Hvis det er pga ændre i databasen, burde du få en fejl når du prøver både at editere og kører din procedure. Vel og mærket hvis det er pga column names har ændre sig eller table names

mvh
Avatar billede jytte Nybegynder
11. januar 2011 - 18:54 #5
Ja der var jeg lige for hurtig til at konkludere - fejlen var i virkeligheden at

declare @SI varchar(20);

skulle have været

declare @SI varchar(34);

og derfor kom jeg aldrig forbi if @SI='XXX' (hvor XXX i virkeligehden var 34 tegn lang)

Så jeg fik løst mit problem
Avatar billede Syska Mester
11. januar 2011 - 22:45 #6
I hvert fald godt du kom videre ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester