/ 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
[MSSQL 2K] Hvor blev min variabel af?
Fra : stk


Dato : 18-09-02 11: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



--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Kristian Damm Jensen (18-09-2002)
Kommentar
Fra : Kristian Damm Jensen


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.


Stefan Kristensen (18-09-2002)
Kommentar
Fra : Stefan Kristensen


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



Stefan Kristensen (18-09-2002)
Kommentar
Fra : Stefan Kristensen


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



stk (18-09-2002)
Kommentar
Fra : stk


Dato : 18-09-02 13:55

Tak for svaret Stefan Kristensen.
                        

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408636
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste