/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[M$ SQL 2K] Fejlhåndtering i stored proced~
Fra : Stefan Kristensen


Dato : 21-02-05 13:10

Hej NG.

Jeg har en procedure der laver en masse inserts i en tabel baseret på nogle
variable.
Nu brokker den sig over duplicate keys, men det forstår jeg ikke rigtigt da
GetDate bruges som værdi i et af nøglefelterne.
Kan jeg på nogen måde få at vide hvilken linie eller sætning der laver
fejlen?
I Visual Basic kan bruge linienumrer og så udskriver Erl. Findes der nogel
lignende i SQL?

Mvh
Stefan



 
 
///M (21-02-2005)
Kommentar
Fra : ///M


Dato : 21-02-05 13:53

Stefan Kristensen wrote:
> Hej NG.
>
> Jeg har en procedure der laver en masse inserts i en tabel baseret på
> nogle variable.
> Nu brokker den sig over duplicate keys, men det forstår jeg ikke
> rigtigt da GetDate bruges som værdi i et af nøglefelterne.
> Kan jeg på nogen måde få at vide hvilken linie eller sætning der laver
> fejlen?
> I Visual Basic kan bruge linienumrer og så udskriver Erl. Findes der
> nogel lignende i SQL?
>
> Mvh
> Stefan

Ehm - getdate kan da sagtens være den samme to "linier" i træk - især når
den udføres fra en SP... hvorfor ikke bruge en entydig tæller?
Om du kan få en fejllinie afhænger bl.a. af om du bruger rekursivitet?

--
Mvh
///M



Stefan Kristensen (21-02-2005)
Kommentar
Fra : Stefan Kristensen


Dato : 21-02-05 14:12

> > Jeg har en procedure der laver en masse inserts i en tabel baseret på
> > nogle variable.
> > Nu brokker den sig over duplicate keys, men det forstår jeg ikke
> > rigtigt da GetDate bruges som værdi i et af nøglefelterne.
> > Kan jeg på nogen måde få at vide hvilken linie eller sætning der laver
> > fejlen?
> > I Visual Basic kan bruge linienumrer og så udskriver Erl. Findes der
> > nogel lignende i SQL?

> Ehm - getdate kan da sagtens være den samme to "linier" i træk - især når
> den udføres fra en SP... hvorfor ikke bruge en entydig tæller?

Jeg skrev 'et af nøglefelterne'

> Om du kan få en fejllinie afhænger bl.a. af om du bruger rekursivitet?

Det gør jeg ikke i dette tilfælde, så der er håb for mig?
I VB bruger jeg en lokal tæller i løkker som jeg så kan skrive ud sammen med
linienummeret. Så har jeg en god chance for at finde fejlen.

Stefan



///M (21-02-2005)
Kommentar
Fra : ///M


Dato : 21-02-05 16:36

Stefan Kristensen wrote:
>>> Jeg har en procedure der laver en masse inserts i en tabel baseret
>>> på nogle variable.
>>> Nu brokker den sig over duplicate keys, men det forstår jeg ikke
>>> rigtigt da GetDate bruges som værdi i et af nøglefelterne.
>>> Kan jeg på nogen måde få at vide hvilken linie eller sætning der
>>> laver fejlen?
>>> I Visual Basic kan bruge linienumrer og så udskriver Erl. Findes der
>>> nogel lignende i SQL?
>
>> Ehm - getdate kan da sagtens være den samme to "linier" i træk -
>> især når den udføres fra en SP... hvorfor ikke bruge en entydig
>> tæller?
>
> Jeg skrev 'et af nøglefelterne'

Fair nok :)
Men hvad mener du med nøglefelt - er det et af de felter som skal være
unikke? I så fald går det galt...


> Det gør jeg ikke i dette tilfælde, så der er håb for mig?

Prøv med Select @@IDENTITY efter hver insert
Du kan så i din Query Analyser eller dit program finde ud af det sidste ID
der blev indsat, og på den måde finde den linie hvor det går galt i.
Indrømmet, det er ikke helt genialt, men måske nok for dig?

--
Mvh
///M



Stefan Kristensen (22-02-2005)
Kommentar
Fra : Stefan Kristensen


Dato : 22-02-05 10:56

> >> Ehm - getdate kan da sagtens være den samme to "linier" i træk -
> >> især når den udføres fra en SP... hvorfor ikke bruge en entydig
> >> tæller?
> >
> > Jeg skrev 'et af nøglefelterne'
>
> Fair nok :)
> Men hvad mener du med nøglefelt - er det et af de felter som skal være
> unikke? I så fald går det galt...

Jeg bruger to tekstfelter og et datofelt som primær nøgle. Det kan
selvfølgelig lade sig gøre at få duplikater, men sandsynligheden er vist
mindre en marginal.

> Prøv med Select @@IDENTITY efter hver insert
> Du kan så i din Query Analyser eller dit program finde ud af det sidste ID
> der blev indsat, og på den måde finde den linie hvor det går galt i.
> Indrømmet, det er ikke helt genialt, men måske nok for dig?

Jeg tror jeg prøver at lægge noget debug ind i min VB rutine der eksekverer
SQL kaldene.
Man tak for dine ideer og forslag

Mvh
Stefan



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste