/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
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
[MSSQL 2K] Hvor blev min variabel af?
Fra : stk
Vist : 732 gange
100 point
Dato : 18-09-02 12:33

Hej NG.
Nedenstående procedure arbejder sig op gennem en træ vha. OrgUnit og
OrgUnitSup. Den øverste OrgUnit's OrgUnitSup felt indeholder null.
Så længe proceduren kører i while løkken, skrives variablen @OUPath fint ud,
men efter løkken bliver den ikke skrevet ud.
Hvor blev @OUPath af?

CREATE PROCEDURE GetOUPath
@OrgUnit varchar(8)
AS
DECLARE @OUPath varchar(256)

SELECT @OUPath = "ou=" + @OrgUnit
print "Stating path: " + @OUPath

WHILE NOT ISNULL(@OrgUnit, "x") = "x"
BEGIN
SELECT @OrgUnit = (
SELECT OrgUnitSup
FROM Organization
WHERE OrgUnit = @OrgUnit)
SELECT @OUPath = @OUPath +", ou=" + @OrgUnit
print @OrgUnit + " added to path"
print @OUPath
END

print "OUPath: " + @OUPath

c",)
Stefan



 
 
Kommentar
Fra : Nyhedsbruger


Dato : 18-09-02 11:36

stk wrote:
>
> Hej NG.
> Nedenstående procedure arbejder sig op gennem en træ vha. OrgUnit og
> OrgUnitSup. Den øverste OrgUnit's OrgUnitSup felt indeholder null.
> Så længe proceduren kører i while løkken, skrives variablen @OUPath fint
> ud,
> men efter løkken bliver den ikke skrevet ud.
> Hvor blev @OUPath af?

Hvad mener du med "bliver ikke skrevet ud"? Kommer den sidste
print-linie slet ikke, eller indeholder den kun "OUPath: "? Det sidste
vil være korrekt adfærd. NULL er ikke en værdi, det er en tilstand, der
indikerer, at der ikke *er* nogen værdi. I hvilket tilfælde det mest
fornuftige er ikke at skrive noget ud.

--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Kommentar
Fra : Nyhedsbruger


Dato : 18-09-02 12:01

> Hvad mener du med "bliver ikke skrevet ud"? Kommer den sidste
> print-linie slet ikke, eller indeholder den kun "OUPath: "? Det sidste
> vil være korrekt adfærd. NULL er ikke en værdi, det er en tilstand, der
> indikerer, at der ikke *er* nogen værdi. I hvilket tilfælde det mest
> fornuftige er ikke at skrive noget ud.
Den sidtse print bliver ikke udført. Hvis jeg udvider den til
print "OUPath: " + ISNULL(@OUPath, "NULL")
skriver den 'OUPath: NULL'. Ergo er @OUPath lig null, men hvorfor? Og mere
væsentligt: hvad skal jeg gøre for at den ikke bliver null men beholder
værdien fra while løkken?

stefan



Accepteret svar
Fra : Nyhedsbruger

Modtaget 110 point
Dato : 18-09-02 12:05

Lidt uddybende info:
Hvis jeg angiver en OrgUnit på niveau fem, opbygger while løkken den
korrekte sti i @OUPath, men efter while løkken er @OUPath null.

stefan



Godkendelse af svar
Fra : stk


Dato : 18-09-02 14:55

Tak for svaret Stefan Kristensen.
                        

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste